Monitoring you Jira like a master (eazyBI Community Days 2024 presentation)

Hi folks!

The following attachments are the exported definitions to create the sources and the reports and dashboards to have the data configurations of Jira that were presented in the eazyBI Community Days 2024.

The files can be found here: Bitbucket

  • Source definitions:
    (Some Source Definitions have an order to import to follow)
    (The source URL must be changed to yours Jira URL)
    (The authorization parameters must also be set)

    • Licenses:

      • Jira: folders path source definition → license → Jira license management.txt
      • Confluence:
        • The ammount of Data Sources to add data to the cube will depend on what are the groups defined to grant access to Confluence. Here is an example considering two groups (“site-admins” and “confluence-users”). The groups you are using must be replace in the “groupname” parameter of the Source URL.
          folders path source definition → license → Confluence License Management - Group 1.txt
          folders path source definition → license → Confluence License Management - Group 2.txt
    • Fields:

      • First import this definition: folders path source definition → field → Field Management - Main.txt
      • Then import this defintion to add more data in the cube: folders path source definition → field → Field Management - Complement.txt
    • Issue types:

      • First import this definition: folders path source definition → issue type → Issue Type Managament.txt
      • Then import these other two to add more data in the cube (no specific order):
        folders path source definition → issue type → Issue Type Management - Issue Type Scheme.txt
        folders path source definition → issue type → Issue Type Management - Projects.txt
    • Issue Type Schemes: folders path source definition → issue type scheme → Issue Type Scheme Management.txt

    • Issue Type Screen Schemes: folders path source definition → issue type screen scheme → Issue Type Screen Scheme Management.txt

    • Statuses: folders path source definition → status → Status Management.txt

    • Workflows:

      • Active workflows: folders path source definition → workflow → Workflow Management - Active.txt
      • Inactive workflows: folders path source definition → workflow → Workflow Management - Inactive.txt
    • Workflow Schemes: folders path source definition → workflow scheme → Workflow Scheme Management.txt

  • Dashboard/reports definition: folders path dashboard definitions → Dashboard - Jira Management.txt

Additionaly, I was not being able to create a “history” of those data. The REST API import was always only reflecting the current data of the Jira items configuration.

But thanks to the help of @janis.baiza we are now able to.

He created a custom javascript code that creates a source id column that can be used as a “Source id” to incremental imports.
I’ll now apply this javascript code in each data source and modify the reports. Once I do that I’ll post here the updated files!

Regards,
Rodrigo Kondo Fernandes

3 Likes

Hi @Kondo

Thanks for the write-up, and again, thanks for sharing the use case!

Here’s a follow-up with the setup that includes the incremental import settings to allow you to analyze the data across Time, to see the improvements you’ve made to the Jira instance.

With the incremental import, you can create reports like these:

Important to understand!
This approach uses a workaround for incremental import that will import the same data additionally to the existing one, but will map it to a different time stamp. So, any reports created with this data must also use the Time dimension (or Hour and Minute dimensions if the imports are run more than once a day).

Setting up:
Create a new eazyBI account for all these sources.
When copying a source definition, use a text editor to find and replace all “ecosystem.atlassian.net” links with your Cloud instance links “******.atlassian.net”.

When the links are replaced, do the following:
For each of the data sources, go to the Source Data tab, click “Add new source application” → “Import definition” and paste the definition in the text field.

In the authorization, provide your Email as Username and your Jira API key as Password.

License Management:

{
  "application_type": "rest_api",
  "application_params": {
    "source_params": {
      "url": "https://ecosystem.atlassian.net/rest/api/3/applicationrole",
      "request_method": "get",
      "pagination": "none",
      "page_parameter": "page",
      "page_parameter_in_body": null,
      "offset_parameter": "offset",
      "offset_parameter_in_body": null,
      "limit_parameter": "limit",
      "limit_parameter_in_body": null,
      "incremental": true,
      "incremental_stop_import": null,
      "authentication_type": "basic",
      "content_type": "json",
      "username": "email",
      "custom_javascript_code": "current_date = new Date();\n\ndoc.date = current_date.toISOString().substring(0,10);\ndoc.hour = current_date.getHours();\ndoc.minute = current_date.getMinutes();\ndoc.source_id = doc.key + \"_\" + current_date.toISOString().substring(0,16);"
    },
    "columns_options": { "hide_unmapped": true },
    "extra_options": {
      "regular_import_frequency": 0,
      "regular_import_at": "",
      "time_zone": ""
    }
  },
  "source_cube_name": "License Management",
  "columns": [
    {
      "name": "key",
      "data_type": "string",
      "dimension": "Product",
      "dimension_level": "Product",
      "key_column": true
    },
    {
      "name": "name",
      "data_type": "string",
      "dimension": "Product",
      "dimension_level": "Product",
      "name_column": true
    },
    { "name": "groups", "data_type": "array" },
    { "name": "groupDetails", "data_type": "array" },
    { "name": "defaultGroups", "data_type": "array" },
    { "name": "defaultGroupsDetails", "data_type": "array" },
    { "name": "selectedByDefault", "data_type": "string" },
    { "name": "defined", "data_type": "string" },
    {
      "name": "numberOfSeats",
      "data_type": "integer",
      "dimension": "Measures",
      "dimension_member": "Licenses"
    },
    {
      "name": "remainingSeats",
      "data_type": "integer",
      "dimension": "Measures",
      "dimension_member": "Remaining licenses"
    },
    {
      "name": "userCount",
      "data_type": "integer",
      "dimension": "Measures",
      "dimension_member": "Licenses in use"
    },
    { "name": "userCountDescription", "data_type": "string" },
    { "name": "hasUnlimitedSeats", "data_type": "string" },
    { "name": "platform", "data_type": "string" },
    { "name": "date", "data_type": "date", "dimension": "Time" },
    { "name": "hour", "data_type": "integer", "dimension": "Hour" },
    { "name": "minute", "data_type": "integer", "dimension": "Minute" },
    { "name": "source_id", "data_type": "string", "source_id_column": true }
  ]
}

Fields Management (1):

{
  "application_type": "rest_api",
  "application_params": {
    "source_params": {
      "url": "https://ecosystem.atlassian.net/rest/api/3/field",
      "request_method": "get",
      "pagination": "none",
      "page_parameter": "page",
      "page_parameter_in_body": null,
      "offset_parameter": "offset",
      "offset_parameter_in_body": null,
      "limit_parameter": "limit",
      "limit_parameter_in_body": null,
      "incremental": true,
      "incremental_stop_import": null,
      "authentication_type": "basic",
      "content_type": "json",
      "username": "email",
      "custom_javascript_code": "current_date = new Date();\n\ndoc.date = current_date.toISOString().substring(0,10);\ndoc.hour = current_date.getHours();\ndoc.minute = current_date.getMinutes();\ndoc.source_id = doc.id + \"_\" + current_date.toISOString().substring(0,16);"
    },
    "columns_options": { "hide_unmapped": true },
    "extra_options": {
      "regular_import_frequency": 0,
      "regular_import_at": "",
      "time_zone": ""
    }
  },
  "source_cube_name": "Fields Management",
  "columns": [
    {
      "name": "name",
      "data_type": "string",
      "dimension": "Field",
      "dimension_level": "Field",
      "name_column": true
    },
    {
      "name": "id",
      "data_type": "string",
      "dimension": "Field",
      "dimension_level": "Field",
      "key_column": true
    },
    {
      "name": "custom",
      "data_type": "string",
      "dimension": "Field",
      "dimension_level": "Field",
      "javascript_code": "if (value) {\n  return \"Custom field\"\n} else {\n  return \"Default field\"\n}",
      "property": "Default or Custom field"
    },
    {
      "name": "schema\ntype (1)",
      "source_column_name": "schema\ntype",
      "data_type": "string",
      "dimension": "Field",
      "dimension_level": "Field",
      "property": "Type"
    },
    {
      "name": "custom (1)",
      "source_column_name": "custom",
      "data_type": "string",
      "dimension": "Default or Custom field",
      "dimension_level": "Default or Custom field",
      "javascript_code": "if (doc.custom == \"Custom field\") {\n  return \"Custom field\"\n} else {\n  return \"Default field\"\n}"
    },
    {
      "name": "schema\ntype",
      "data_type": "string",
      "dimension": "Type",
      "dimension_level": "Type"
    },
    { "name": "key", "data_type": "string" },
    { "name": "orderable", "data_type": "string" },
    { "name": "navigable", "data_type": "string" },
    { "name": "searchable", "data_type": "string" },
    { "name": "clauseNames", "data_type": "array" },
    { "name": "schema\nitems", "data_type": "string" },
    { "name": "schema\nsystem", "data_type": "string" },
    { "name": "untranslatedName", "data_type": "string" },
    { "name": "schema\ncustom", "data_type": "string" },
    { "name": "schema\ncustomId", "data_type": "integer" },
    { "name": "scope\ntype", "data_type": "string" },
    { "name": "scope\nproject\nid", "data_type": "integer" },
    { "name": "schema\nconfiguration\nisMulti", "data_type": "string" },
    {
      "name": "Row count",
      "dimension": "Measures",
      "dimension_member": "Custom fields created",
      "data_type": "integer",
      "source_column_name": "(internal)",
      "calculation": "row_count"
    },
    { "name": "date", "data_type": "date", "dimension": "Time" },
    { "name": "hour", "data_type": "integer", "dimension": "Hour" },
    { "name": "minute", "data_type": "integer", "dimension": "Minute" },
    { "name": "source_id", "data_type": "string", "source_id_column": true },
    {
      "name": "schema\nconfiguration\ncom.atlassian.jira.plugin.system.customfieldtypes:atlassian-team",
      "data_type": "string"
    }
  ]
}

Fields Management (2):

{
  "application_type": "rest_api",
  "application_params": {
    "source_params": {
      "url": "https://ecosystem.atlassian.net/rest/api/3/field/search?expand=lastUsed",
      "request_method": "get",
      "pagination": "offset_limit",
      "page_parameter": "page",
      "page_parameter_in_body": null,
      "offset_parameter": "startAt",
      "offset_parameter_in_body": null,
      "limit_parameter": "total",
      "limit_parameter_in_body": null,
      "limit_value": 50,
      "concurrency": 10,
      "incremental": true,
      "incremental_stop_import": null,
      "authentication_type": "basic",
      "content_type": "json",
      "json_data_path": "$.values",
      "username": "email",
      "custom_javascript_code": "current_date = new Date();\n\ndoc.date = current_date.toISOString().substring(0,10);\ndoc.hour = current_date.getHours();\ndoc.minute = current_date.getMinutes();\ndoc.source_id = doc.id + \"_\" + current_date.toISOString().substring(0,16);"
    },
    "columns_options": { "hide_unmapped": true },
    "extra_options": {
      "regular_import_frequency": 0,
      "regular_import_at": "",
      "time_zone": ""
    }
  },
  "source_cube_name": "Fields Management",
  "columns": [
    {
      "name": "id",
      "data_type": "string",
      "dimension": "Field",
      "key_column": true,
      "skip_missing": true,
      "dimension_level": "Field"
    },
    {
      "name": "description",
      "data_type": "text",
      "dimension": "Field",
      "property": "Description",
      "dimension_level": "Field"
    },
    { "name": "name", "data_type": "string" },
    { "name": "schema\ntype", "data_type": "string" },
    { "name": "schema\nitems", "data_type": "string" },
    { "name": "schema\nsystem", "data_type": "string" },
    { "name": "lastUsed\ntype", "data_type": "string" },
    { "name": "schema\ncustom", "data_type": "string" },
    { "name": "schema\ncustomId", "data_type": "integer" },
    {
      "name": "lastUsed\nvalue",
      "data_type": "datetime",
      "dimension": "Field",
      "property": "Last used",
      "dimension_level": "Field"
    },
    { "name": "date", "data_type": "date", "dimension": "Time" },
    { "name": "hour", "data_type": "integer", "dimension": "Hour" },
    { "name": "minute", "data_type": "integer", "dimension": "Minute" },
    { "name": "source_id", "data_type": "string", "source_id_column": true },
    {
      "name": "Row count",
      "dimension": "Measures",
      "dimension_member": "Custom fields created",
      "data_type": "integer",
      "source_column_name": "(internal)",
      "calculation": "row_count"
    }
  ]
}

Issue Type Management (1):

{
  "application_type": "rest_api",
  "application_params": {
    "source_params": {
      "url": "https://ecosystem.atlassian.net/rest/api/3/issuetype",
      "request_method": "get",
      "pagination": "none",
      "page_parameter": "page",
      "page_parameter_in_body": null,
      "offset_parameter": "offset",
      "offset_parameter_in_body": null,
      "limit_parameter": "limit",
      "limit_parameter_in_body": null,
      "incremental": true,
      "incremental_stop_import": null,
      "authentication_type": "basic",
      "content_type": "json",
      "username": "email",
      "custom_javascript_code": "current_date = new Date();\n\ndoc.date = current_date.toISOString().substring(0,10);\ndoc.hour = current_date.getHours();\ndoc.minute = current_date.getMinutes();\ndoc.source_id = doc.id + \"_\" + current_date.toISOString().substring(0,16);"
    },
    "columns_options": { "hide_unmapped": true },
    "extra_options": {
      "regular_import_frequency": 0,
      "regular_import_at": "",
      "time_zone": ""
    }
  },
  "source_cube_name": "Issue Type Management",
  "columns": [
    { "name": "self", "data_type": "string" },
    {
      "name": "id",
      "data_type": "integer",
      "dimension": "IssueType",
      "dimension_level": "IssueType",
      "property": "Key",
      "key_column": true
    },
    {
      "name": "name",
      "data_type": "string",
      "dimension": "IssueType",
      "dimension_level": "IssueType",
      "name_column": true
    },
    {
      "name": "subtask",
      "data_type": "string",
      "dimension": "Is SubTask",
      "dimension_level": "Is SubTask"
    },
    {
      "name": "scope\ntype",
      "data_type": "string",
      "dimension": "Issue Type Scope",
      "javascript_code": "if(value == null){\n  return 'Global'\n}else{\n  return 'Team-managed project'\n}",
      "dimension_level": "Issue Type Scope"
    },
    {
      "name": "Row count",
      "dimension": "Measures",
      "dimension_member": "Row count",
      "data_type": "integer",
      "source_column_name": "(internal)",
      "calculation": "row_count"
    },
    { "name": "description", "data_type": "string" },
    { "name": "iconUrl", "data_type": "string" },
    { "name": "untranslatedName", "data_type": "string" },
    { "name": "avatarId", "data_type": "integer" },
    { "name": "hierarchyLevel", "data_type": "integer" },
    { "name": "scope\nproject\nid", "data_type": "integer" },
    { "name": "date", "data_type": "date", "dimension": "Time" },
    { "name": "hour", "data_type": "integer", "dimension": "Hour" },
    { "name": "minute", "data_type": "integer", "dimension": "Minute" },
    { "name": "source_id", "data_type": "string", "source_id_column": true }
  ]
}

Issue Type Management (2):

{
  "application_type": "rest_api",
  "application_params": {
    "source_params": {
      "url": "https://ecosystem.atlassian.net/rest/api/3/issuetypescheme?expand=issueTypes",
      "request_method": "get",
      "pagination": "offset_limit",
      "page_parameter": "page",
      "page_parameter_in_body": null,
      "offset_parameter": "startAt",
      "offset_parameter_in_body": null,
      "limit_parameter": "total",
      "limit_parameter_in_body": null,
      "limit_value": 50,
      "concurrency": 10,
      "incremental": true,
      "incremental_stop_import": null,
      "authentication_type": "basic",
      "content_type": "json",
      "json_data_path": "$.values",
      "username": "email",
      "custom_javascript_code": "current_date = new Date();\n\ndoc.date = current_date.toISOString().substring(0,10);\ndoc.hour = current_date.getHours();\ndoc.minute = current_date.getMinutes();\ndoc.source_id = doc.id + \"_\" + current_date.toISOString().substring(0,16);"
    },
    "extra_options": {
      "regular_import_frequency": 0,
      "regular_import_at": "",
      "time_zone": "Berlin"
    }
  },
  "source_cube_name": "Issue Type Management",
  "columns": [
    {
      "name": "id",
      "data_type": "integer",
      "dimension": "IssueTypeScheme",
      "dimension_level": "IssueTypeScheme",
      "id_column": true
    },
    {
      "name": "name",
      "data_type": "string",
      "dimension": "IssueTypeScheme",
      "dimension_level": "IssueTypeScheme",
      "name_column": true
    },
    {
      "name": "Issue types in use",
      "data_type": "string",
      "source_column_name": "(internal)",
      "javascript_code": "var issueTypes = doc.issueTypes.values;\nvar issueTypeContexts = [];\nfor(var i = issueTypes.length-1; i>= 0; i--) {\n   var issueTypeId = issueTypes[i];\n    issueTypeContexts.push(\n       issueTypeId.id\n    );\n}\nreturn issueTypeContexts;",
      "dimension": "IssueTypeScheme",
      "property": "issueTypesInUse",
      "dimension_level": "IssueTypeScheme"
    },
    { "name": "description", "data_type": "string" },
    { "name": "isDefault", "data_type": "string" },
    { "name": "issueTypes\nmaxResults", "data_type": "integer" },
    { "name": "issueTypes\nstartAt", "data_type": "integer" },
    { "name": "issueTypes\ntotal", "data_type": "integer" },
    { "name": "issueTypes\nisLast", "data_type": "string" },
    { "name": "issueTypes\nvalues", "data_type": "array" },
    { "name": "defaultIssueTypeId", "data_type": "integer" },
    { "name": "date", "data_type": "date", "dimension": "Time" },
    { "name": "source_id", "data_type": "string", "source_id_column": true },
    { "name": "hour", "data_type": "integer", "dimension": "Hour" },
    { "name": "minute", "data_type": "integer", "dimension": "Minute" },
    {
      "name": "Row count",
      "dimension": "Measures",
      "dimension_member": "Row count",
      "data_type": "integer",
      "source_column_name": "(internal)",
      "calculation": "row_count"
    }
  ]
}

Issue Type Management (3):

{
  "application_type": "rest_api",
  "application_params": {
    "source_params": {
      "url": "https://ecosystem.atlassian.net/rest/api/3/project/search?expand=issueTypes",
      "request_method": "get",
      "pagination": "next_page_url",
      "page_parameter": "page",
      "page_parameter_in_body": null,
      "offset_parameter": "offset",
      "offset_parameter_in_body": null,
      "limit_parameter": "limit",
      "limit_parameter_in_body": null,
      "next_page_url_property": "nextPage",
      "incremental": true,
      "incremental_stop_import": null,
      "authentication_type": "basic",
      "content_type": "json",
      "json_data_path": "$.values",
      "username": "email",
      "custom_javascript_code": "current_date = new Date();\n\ndoc.date = current_date.toISOString().substring(0,10);\ndoc.hour = current_date.getHours();\ndoc.minute = current_date.getMinutes();\ndoc.source_id = doc.id + \"_\" + current_date.toISOString().substring(0,16);"
    },
    "columns_options": { "hide_unmapped": true },
    "extra_options": {
      "regular_import_frequency": 0,
      "regular_import_at": "",
      "time_zone": ""
    }
  },
  "source_cube_name": "Issue Type Management",
  "columns": [
    { "name": "expand", "data_type": "string" },
    { "name": "self", "data_type": "string" },
    {
      "name": "id",
      "data_type": "integer",
      "dimension": "Jira Project",
      "dimension_level": "Jira Project",
      "id_column": true
    },
    {
      "name": "key",
      "data_type": "string",
      "dimension": "Jira Project",
      "dimension_level": "Jira Project",
      "key_column": true
    },
    {
      "name": "name",
      "data_type": "string",
      "dimension": "Jira Project",
      "dimension_level": "Jira Project",
      "name_column": true
    },
    {
      "name": "Issue types in use",
      "data_type": "string",
      "source_column_name": "(internal)",
      "javascript_code": "var issueTypes = doc.issueTypes;\nvar issueTypeContexts = [];\nfor(var i = issueTypes.length-1; i>= 0; i--) {\n   var issueTypeId = issueTypes[i];\n    issueTypeContexts.push(\n       issueTypeId.id\n    );\n}\nreturn issueTypeContexts;",
      "dimension": "Jira Project",
      "property": "issueTypesInUse",
      "dimension_level": "Jira Project"
    },
    { "name": "issueTypes", "data_type": "array" },
    { "name": "avatarUrls\n48x48", "data_type": "string" },
    { "name": "avatarUrls\n24x24", "data_type": "string" },
    { "name": "avatarUrls\n16x16", "data_type": "string" },
    { "name": "avatarUrls\n32x32", "data_type": "string" },
    { "name": "projectTypeKey", "data_type": "string" },
    { "name": "simplified", "data_type": "string" },
    { "name": "style", "data_type": "string" },
    { "name": "isPrivate", "data_type": "string" },
    { "name": "entityId", "data_type": "string" },
    { "name": "uuid", "data_type": "string" },
    { "name": "projectCategory\nself", "data_type": "string" },
    { "name": "projectCategory\nid", "data_type": "integer" },
    { "name": "projectCategory\nname", "data_type": "string" },
    { "name": "projectCategory\ndescription", "data_type": "string" },
    { "name": "date", "data_type": "date", "dimension": "Time" },
    { "name": "hour", "data_type": "integer", "dimension": "Hour" },
    { "name": "minute", "data_type": "integer", "dimension": "Minute" },
    { "name": "source_id", "data_type": "string", "source_id_column": true },
    {
      "name": "Row count",
      "dimension": "Measures",
      "dimension_member": "Row count",
      "data_type": "integer",
      "source_column_name": "(internal)",
      "calculation": "row_count"
    }
  ]
}

Issue Type Scheme Management:

{
  "application_type": "rest_api",
  "application_params": {
    "source_params": {
      "url": "https://ecosystem.atlassian.net/rest/api/3/issuetypescheme?expand=projects",
      "request_method": "get",
      "pagination": "offset_limit",
      "page_parameter": "page",
      "page_parameter_in_body": null,
      "offset_parameter": "startAt",
      "offset_parameter_in_body": null,
      "limit_parameter": "total",
      "limit_parameter_in_body": null,
      "limit_value": 50,
      "concurrency": 10,
      "incremental": true,
      "incremental_stop_import": null,
      "authentication_type": "basic",
      "content_type": "json",
      "json_data_path": "$.values",
      "username": "email",
      "custom_javascript_code": "current_date = new Date();\n\ndoc.date = current_date.toISOString().substring(0,10);\ndoc.hour = current_date.getHours();\ndoc.minute = current_date.getMinutes();\ndoc.source_id = doc.id + \"_\" + current_date.toISOString().substring(0,16);"
    },
    "columns_options": { "hide_unmapped": true },
    "extra_options": {
      "regular_import_frequency": 0,
      "regular_import_at": "",
      "time_zone": ""
    }
  },
  "source_cube_name": "Issue Type Scheme Management",
  "columns": [
    {
      "name": "name",
      "data_type": "string",
      "dimension": "Issue Type Scheme",
      "dimension_level": "Issue Type Scheme",
      "name_column": true
    },
    {
      "name": "id",
      "data_type": "integer",
      "dimension": "Issue Type Scheme",
      "dimension_level": "Issue Type Scheme",
      "key_column": true,
      "property": "Key"
    },
    {
      "name": "description",
      "data_type": "text",
      "dimension": "Issue Type Scheme",
      "dimension_level": "Issue Type Scheme",
      "property": "Description"
    },
    {
      "name": "projects\nmaxResults (1)",
      "source_column_name": "projects\nmaxResults",
      "data_type": "string",
      "javascript_code": "if(value > 0){\n  return 'Active'\n}else{\n  return 'Inactive'\n}",
      "dimension": "Issue Type Scheme",
      "dimension_level": "Issue Type Scheme",
      "property": "Status"
    },
    {
      "name": "projects\nmaxResults",
      "data_type": "string",
      "javascript_code": "if(value > 0){\n  return 'Active'\n}else{\n  return 'Inactive'\n}",
      "dimension": "Issue Type Scheme Status",
      "dimension_level": "Issue Type Scheme Status"
    },
    { "name": "isDefault", "data_type": "string" },
    { "name": "defaultIssueTypeId", "data_type": "integer" },
    {
      "name": "Row count",
      "dimension": "Measures",
      "dimension_member": "Issue Type Scheme count",
      "data_type": "integer",
      "source_column_name": "(internal)",
      "calculation": "row_count"
    },
    { "name": "projects\nstartAt", "data_type": "integer" },
    { "name": "projects\ntotal", "data_type": "integer" },
    { "name": "projects\nisLast", "data_type": "string" },
    { "name": "projects\nvalues", "data_type": "array" },
    { "name": "date", "data_type": "date", "dimension": "Time" },
    { "name": "hour", "data_type": "integer", "dimension": "Hour" },
    { "name": "minute", "data_type": "integer", "dimension": "Minute" },
    { "name": "source_id", "data_type": "string", "source_id_column": true }
  ]
}

Issue Type Screen Scheme Management:

{
  "application_type": "rest_api",
  "application_params": {
    "source_params": {
      "url": "https://ecosystem.atlassian.net/rest/api/3/issuetypescreenscheme?expand=projects",
      "request_method": "get",
      "pagination": "offset_limit",
      "page_parameter": "page",
      "page_parameter_in_body": null,
      "offset_parameter": "startAt",
      "offset_parameter_in_body": null,
      "limit_parameter": "total",
      "limit_parameter_in_body": null,
      "limit_value": 50,
      "concurrency": 10,
      "incremental": true,
      "incremental_stop_import": null,
      "authentication_type": "basic",
      "content_type": "json",
      "json_data_path": "$.values",
      "username": "email",
      "custom_javascript_code": "current_date = new Date();\n\ndoc.date = current_date.toISOString().substring(0,10);\ndoc.hour = current_date.getHours();\ndoc.minute = current_date.getMinutes();\ndoc.source_id = doc.id + \"_\" + current_date.toISOString().substring(0,16);"
    },
    "columns_options": { "hide_unmapped": true },
    "extra_options": {
      "regular_import_frequency": 0,
      "regular_import_at": "",
      "time_zone": "Berlin"
    }
  },
  "source_cube_name": "Issue Type Screen Scheme Management",
  "columns": [
    {
      "name": "id",
      "data_type": "integer",
      "dimension": "IssueType Screen Scheme",
      "dimension_level": "IssueType Screen Scheme",
      "id_column": true
    },
    {
      "name": "name",
      "data_type": "string",
      "dimension": "IssueType Screen Scheme",
      "name_column": true,
      "dimension_level": "IssueType Screen Scheme"
    },
    {
      "name": "schemeStatus",
      "data_type": "string",
      "source_column_name": "(internal)",
      "javascript_code": "if(doc.projects.maxResults > 0){\n  return \"In use\";\n}else{\n  return \"Not in use\";\n}",
      "dimension": "IssueType Screen Scheme",
      "dimension_level": "IssueType Screen Scheme",
      "property": "Status"
    },
    {
      "name": "Status",
      "data_type": "string",
      "source_column_name": "(internal)",
      "javascript_code": "if(doc.projects.maxResults > 0){\n  return \"In use\";\n}else{\n  return \"Not in use\";\n}",
      "dimension": "IssueType Screen Scheme Status"
    },
    { "name": "description", "data_type": "string" },
    { "name": "projects\nmaxResults", "data_type": "integer" },
    { "name": "projects\nstartAt", "data_type": "integer" },
    { "name": "projects\ntotal", "data_type": "integer" },
    { "name": "projects\nisLast", "data_type": "string" },
    { "name": "projects\nvalues", "data_type": "array" },
    {
      "name": "Row count",
      "dimension": "Measures",
      "dimension_member": "Issue Type Screen Scheme count",
      "data_type": "integer",
      "source_column_name": "(internal)",
      "calculation": "row_count"
    },
    { "name": "date", "data_type": "date", "dimension": "Time" },
    { "name": "hour", "data_type": "integer", "dimension": "Hour" },
    { "name": "minute", "data_type": "integer", "dimension": "Minute" },
    { "name": "source_id", "data_type": "string", "source_id_column": true }
  ]
}

Status Management:

{
  "application_type": "rest_api",
  "application_params": {
    "source_params": {
      "url": "https://ecosystem.atlassian.net/rest/api/3/statuses/search?expand=usages,workflowUsages",
      "request_method": "get",
      "pagination": "next_page_url",
      "page_parameter": "page",
      "page_parameter_in_body": null,
      "offset_parameter": "offset",
      "offset_parameter_in_body": null,
      "limit_parameter": "limit",
      "limit_parameter_in_body": null,
      "incremental": true,
      "incremental_stop_import": null,
      "authentication_type": "basic",
      "content_type": "json",
      "json_data_path": "$.values",
      "next_page_url_property": "nextPage",
      "username": "email",
      "custom_javascript_code": "current_date = new Date();\n\ndoc.date = current_date.toISOString().substring(0,10);\ndoc.hour = current_date.getHours();\ndoc.minute = current_date.getMinutes();\ndoc.source_id = doc.id + \"_\" + current_date.toISOString().substring(0,16);"
    },
    "extra_options": {
      "regular_import_frequency": 0,
      "regular_import_at": "",
      "time_zone": ""
    }
  },
  "source_cube_name": "Status Management",
  "columns": [
    {
      "name": "name",
      "data_type": "string",
      "dimension": "Status",
      "dimension_level": "Status",
      "name_column": true
    },
    {
      "name": "id",
      "data_type": "integer",
      "dimension": "Status",
      "dimension_level": "Status",
      "property": "Status ID"
    },
    {
      "name": "statusCategory (1)",
      "source_column_name": "statusCategory",
      "data_type": "string",
      "dimension": "Status",
      "dimension_level": "Status",
      "property": "Category"
    },
    {
      "name": "statusCategory",
      "data_type": "string",
      "dimension": "Status Category",
      "dimension_level": "Status Category"
    },
    {
      "name": "scope\ntype",
      "data_type": "string",
      "dimension": "Scope Type",
      "dimension_level": "Scope Type"
    },
    {
      "name": "description",
      "data_type": "string",
      "dimension": "Status",
      "dimension_level": "Status",
      "property": "Status Description"
    },
    { "name": "usages", "data_type": "array" },
    {
      "name": "In use",
      "data_type": "string",
      "source_column_name": "(internal)",
      "javascript_code": "var use\nif(_.some(doc.usages, \"project\", true, false)){\n  use = \"In use\"\n}else{\n  use = \"Not in use\"\n}\nreturn use",
      "dimension": "In use",
      "dimension_level": "In use"
    },
    {
      "name": "Row count",
      "dimension": "Measures",
      "dimension_member": "Status Count",
      "data_type": "integer",
      "source_column_name": "(internal)",
      "calculation": "row_count"
    },
    { "name": "workflowUsages", "data_type": "array" },
    {
      "name": "In use in any workflow",
      "data_type": "string",
      "source_column_name": "(internal)",
      "javascript_code": "var use\nif(_.some(doc.workflowUsages, \"workflowName\", true, false)){\n  use = \"In use\"\n}else{\n  use = \"Not in use\"\n}\nreturn use",
      "dimension": "In use in workflow",
      "dimension_level": "In use in workflow"
    },
    { "name": "date", "data_type": "date", "dimension": "Time" },
    { "name": "hour", "data_type": "integer", "dimension": "Hour" },
    { "name": "minute", "data_type": "integer", "dimension": "Minute" },
    { "name": "source_id", "data_type": "string", "source_id_column": true }
  ]
}

Workflow Management (1):

{
  "application_type": "rest_api",
  "application_params": {
    "source_params": {
      "url": "https://ecosystem.atlassian.net/rest/api/3/workflow/search?isActive=true",
      "request_method": "get",
      "pagination": "offset_limit",
      "page_parameter": "page",
      "page_parameter_in_body": null,
      "offset_parameter": "startAt",
      "offset_parameter_in_body": null,
      "limit_parameter": "total",
      "limit_parameter_in_body": null,
      "limit_value": 50,
      "concurrency": 10,
      "incremental": true,
      "incremental_stop_import": null,
      "authentication_type": "basic",
      "content_type": "json",
      "json_data_path": "$.values",
      "username": "email",
      "custom_javascript_code": "current_date = new Date();\n\ndoc.date = current_date.toISOString().substring(0,10);\ndoc.hour = current_date.getHours();\ndoc.minute = current_date.getMinutes();\ndoc.source_id = doc.id.entityId + \"_\" + current_date.toISOString().substring(0,16);"
    },
    "columns_options": { "hide_unmapped": true },
    "extra_options": {
      "regular_import_frequency": 0,
      "regular_import_at": "",
      "time_zone": ""
    }
  },
  "source_cube_name": "Workflow Management",
  "columns": [
    {
      "name": "id\nname",
      "data_type": "string",
      "dimension": "Workflow",
      "property": "Workflow Name",
      "dimension_level": "Workflow"
    },
    {
      "name": "id\nentityId",
      "data_type": "string",
      "dimension": "Workflow",
      "property": "Workflow entityId",
      "dimension_level": "Workflow"
    },
    {
      "name": "description",
      "data_type": "string",
      "dimension": "Workflow",
      "property": "Workflow Description",
      "dimension_level": "Workflow"
    },
    {
      "name": "created",
      "data_type": "datetime",
      "dimension": "Workflow",
      "property": "Workflow created date",
      "dimension_level": "Workflow"
    },
    {
      "name": "workflowStatus",
      "data_type": "string",
      "source_column_name": "(internal)",
      "javascript_code": "return \"Active\"",
      "dimension": "Workflow",
      "dimension_level": "Workflow",
      "property": "Status"
    },
    { "name": "updated", "data_type": "datetime" },
    {
      "name": "Row count",
      "dimension": "Measures",
      "dimension_member": "Row count",
      "data_type": "integer",
      "source_column_name": "(internal)",
      "calculation": "row_count"
    },
    {
      "name": "Workflow Status",
      "data_type": "string",
      "source_column_name": "(internal)",
      "javascript_code": "return \"Active\"",
      "dimension": "Workflow Status",
      "dimension_level": "Workflow Status"
    },
    { "name": "date", "data_type": "date", "dimension": "Time" },
    { "name": "hour", "data_type": "integer", "dimension": "Hour" },
    { "name": "minute", "data_type": "integer", "dimension": "Minute" },
    { "name": "source_id", "data_type": "string", "source_id_column": true }
  ]
}

Workflow Management (2):

{
  "application_type": "rest_api",
  "application_params": {
    "source_params": {
      "url": "https://ecosystem.atlassian.net/rest/api/3/workflow/search?isActive=false",
      "request_method": "get",
      "pagination": "offset_limit",
      "page_parameter": "page",
      "page_parameter_in_body": null,
      "offset_parameter": "startAt",
      "offset_parameter_in_body": null,
      "limit_parameter": "total",
      "limit_parameter_in_body": null,
      "limit_value": 50,
      "concurrency": 10,
      "incremental": true,
      "incremental_stop_import": null,
      "authentication_type": "basic",
      "content_type": "json",
      "json_data_path": "$.values",
      "username": "email",
      "custom_javascript_code": "current_date = new Date();\n\ndoc.date = current_date.toISOString().substring(0,10);\ndoc.hour = current_date.getHours();\ndoc.minute = current_date.getMinutes();\ndoc.source_id = doc.id.entityId + \"_\" + current_date.toISOString().substring(0,16);"
    },
    "extra_options": {
      "regular_import_frequency": 0,
      "regular_import_at": "",
      "time_zone": ""
    }
  },
  "source_cube_name": "Workflow Management",
  "columns": [
    {
      "name": "id\nname",
      "data_type": "string",
      "dimension": "Workflow",
      "property": "Workflow Name",
      "dimension_level": "Workflow"
    },
    {
      "name": "id\nentityId",
      "data_type": "string",
      "dimension": "Workflow",
      "property": "Workflow entityId",
      "dimension_level": "Workflow"
    },
    {
      "name": "description",
      "data_type": "string",
      "dimension": "Workflow",
      "property": "Workflow Description",
      "dimension_level": "Workflow"
    },
    {
      "name": "created",
      "data_type": "datetime",
      "dimension": "Workflow",
      "property": "Workflow created date",
      "dimension_level": "Workflow"
    },
    {
      "name": "status",
      "data_type": "string",
      "source_column_name": "(internal)",
      "javascript_code": "return \"Inactive\"",
      "dimension": "Workflow",
      "dimension_level": "Workflow",
      "property": "Status"
    },
    {
      "name": "Workflow Status",
      "data_type": "string",
      "source_column_name": "(internal)",
      "javascript_code": "return \"Inactive\"",
      "dimension": "Workflow Status",
      "dimension_level": "Workflow Status"
    },
    { "name": "updated", "data_type": "datetime" },
    {
      "name": "Row count",
      "dimension": "Measures",
      "dimension_member": "Row count",
      "data_type": "integer",
      "source_column_name": "(internal)",
      "calculation": "row_count"
    },
    { "name": "date", "data_type": "date", "dimension": "Time" },
    { "name": "hour", "data_type": "integer", "dimension": "Hour" },
    { "name": "minute", "data_type": "integer", "dimension": "Minute" },
    { "name": "source_id", "data_type": "string", "source_id_column": true }
  ]
}

Workflow Scheme Management:

{
  "application_type": "rest_api",
  "application_params": {
    "source_params": {
      "url": "https://ecosystem.atlassian.net/rest/api/3/workflowscheme",
      "request_method": "get",
      "pagination": "offset_limit",
      "page_parameter": "page",
      "page_parameter_in_body": null,
      "offset_parameter": "startAt",
      "offset_parameter_in_body": null,
      "limit_parameter": "total",
      "limit_parameter_in_body": null,
      "next_page_url_property": "nextPage",
      "incremental": true,
      "incremental_stop_import": null,
      "authentication_type": "basic",
      "content_type": "json",
      "json_data_path": "$.values",
      "limit_value": 50,
      "concurrency": 10,
      "username": "email",
      "custom_javascript_code": "current_date = new Date();\n\ndoc.date = current_date.toISOString().substring(0,10);\ndoc.hour = current_date.getHours();\ndoc.minute = current_date.getMinutes();\ndoc.source_id = doc.id + \"_\" + current_date.toISOString().substring(0,16);"
    },
    "columns_options": { "hide_unmapped": true },
    "extra_options": {
      "regular_import_frequency": 0,
      "regular_import_at": "",
      "time_zone": "Berlin"
    }
  },
  "source_cube_name": "Workflow Scheme Management",
  "columns": [
    {
      "name": "name",
      "data_type": "string",
      "dimension": "Workflow Scheme",
      "dimension_level": "Workflow Scheme",
      "name_column": true
    },
    {
      "name": "id",
      "data_type": "integer",
      "dimension": "Workflow Scheme",
      "dimension_level": "Workflow Scheme",
      "id_column": true
    },
    {
      "name": "description",
      "data_type": "string",
      "dimension": "Workflow Scheme",
      "property": "Description",
      "dimension_level": "Workflow Scheme"
    },
    {
      "name": "defaultWorkflow",
      "data_type": "string",
      "dimension": "Workflow Scheme",
      "dimension_level": "Workflow Scheme",
      "property": "Default Workflow"
    },
    { "name": "self", "data_type": "string" },
    {
      "name": "Row count",
      "dimension": "Measures",
      "dimension_member": "WF Scheme count",
      "data_type": "integer",
      "source_column_name": "(internal)",
      "calculation": "row_count"
    },
    { "name": "issueTypeMappings\n10019", "data_type": "string" },
    { "name": "issueTypeMappings\n10018", "data_type": "string" },
    { "name": "date", "data_type": "date", "dimension": "Time" },
    { "name": "hour", "data_type": "integer", "dimension": "Hour" },
    { "name": "minute", "data_type": "integer", "dimension": "Minute" },
    { "name": "source_id", "data_type": "string", "source_id_column": true },
    { "name": "issueTypeMappings\n10008", "data_type": "string" },
    { "name": "issueTypeMappings\n10009", "data_type": "string" },
    { "name": "issueTypeMappings\n10020", "data_type": "string" },
    { "name": "issueTypeMappings\n10022", "data_type": "string" },
    { "name": "issueTypeMappings\n10021", "data_type": "string" },
    { "name": "issueTypeMappings\n10069", "data_type": "string" },
    { "name": "issueTypeMappings\n10057", "data_type": "string" },
    { "name": "issueTypeMappings\n10068", "data_type": "string" },
    { "name": "issueTypeMappings\n10072", "data_type": "string" },
    { "name": "issueTypeMappings\n10064", "data_type": "string" },
    { "name": "issueTypeMappings\n10063", "data_type": "string" },
    { "name": "issueTypeMappings\n10066", "data_type": "string" },
    { "name": "issueTypeMappings\n10065", "data_type": "string" },
    { "name": "issueTypeMappings\n10067", "data_type": "string" },
    { "name": "issueTypeMappings\n10010", "data_type": "string" },
    { "name": "issueTypeMappings\n10058", "data_type": "string" },
    { "name": "issueTypeMappings\n10056", "data_type": "string" }
  ]
}

Dashboards:

After all of the data source are created and imported, you can go to the Dashboards section and import the following dashboard definitions, to achieve the reports seen in the above screenshot. Note that these reports use both Day and Hour level on the X axis, you can change this in each report individually if necessary.

{
  "dashboards": [ {
    "name": "Jira Custom fields",
    "definition": {"pages":[{"cube_name":"Fields Management","name":"Default or Custom field","selected_set":["[Default or Custom field].[All Default or Custom fields]"],"members":[{"depth":0,"name":"All Default or Custom fields","full_name":"[Default or Custom field].[All Default or Custom fields]","drillable":true,"type":"all","expanded":true,"drilled_into":false,"caption":"All Default or Custom fields"},{"depth":1,"name":"Custom field","full_name":"[Default or Custom field].[Custom field]","caption":"Custom field"}],"current_page_members":["[Default or Custom field].[Custom field]"]},{"cube_name":"Fields Management","name":"Type","selected_set":["[Type].[All Types]"],"members":[{"depth":0,"name":"All Types","full_name":"[Type].[All Types]","drillable":true,"type":"all","caption":"All Types","expanded":true,"drilled_into":false},{"depth":1,"name":"number","full_name":"[Type].[number]","caption":"number"}],"current_page_members":["[Type].[number]"]}],"reports":[{"width":33.33,"cube_report_name":"Number of Custom fields by day","cube_name":"Fields Management"},{"width":66.66,"cube_report_name":"Custom fields by Type","cube_name":"Fields Management"}],"pages_options":{}}
  },{
    "name": "Jira Issue Types",
    "definition": {"pages":[],"reports":[{"width":33.33,"cube_report_name":"Number of Issue Types","cube_name":"Issue Type Management"},{"width":33.33,"cube_report_name":"Issue Type Schemes count by day","cube_name":"Issue Type Scheme Management"},{"width":33.33,"cube_report_name":"Issue Type Screen Schemes count by day","cube_name":"Issue Type Screen Scheme Management"}],"pages_options":{}}
  },{
    "name": "Jira Statuses and Workflows",
    "definition": {"pages":[],"reports":[{"width":33.33,"cube_report_name":"Statuses by Category by day","cube_name":"Status Management"},{"width":33.33,"cube_report_name":"Workflows by Status by day","cube_name":"Workflow Management"},{"width":33.33,"cube_report_name":"Workflow Scheme count by day","cube_name":"Workflow Scheme Management"}],"pages_options":{}}
  },{
    "name": "Jira Item count across Time",
    "definition": {"pages":[],"reports":[{"width":33.33,"cube_report_name":"Statuses by Category by day","cube_name":"Status Management"},{"width":33.33,"cube_report_name":"Issue Type Schemes count by day","cube_name":"Issue Type Scheme Management"},{"width":33.33,"cube_report_name":"Issue Type Screen Schemes count by day","cube_name":"Issue Type Screen Scheme Management"},{"width":33.33,"cube_report_name":"Workflow Scheme count by day","cube_name":"Workflow Scheme Management"},{"width":33.33,"cube_report_name":"Workflows by Status by day","cube_name":"Workflow Management"},{"width":33.33,"cube_report_name":"Number of Issue Types","cube_name":"Issue Type Management"}],"pages_options":{}}
  } ],
  "dashboard_reports": [ {
    "cube_name": "Fields Management",
    "cube_reports": [ {
       "name": "Number of Custom fields by day",
       "result_view": "line_chart",
       "definition": {"columns":{"dimensions":[{"name":"Measures","selected_set":["[Measures].[Field count]"],"members":[]}]},"rows":{"dimensions":[{"name":"Time","selected_set":["[Time].[Day].Members"],"members":[],"bookmarked_members":[]},{"name":"Hour","selected_set":["[Hour].[Hour].Members"],"members":[],"bookmarked_members":[]}],"nonempty_crossjoin":true},"pages":{"dimensions":[{"name":"Default or Custom field","selected_set":["[Default or Custom field].[All Default or Custom fields]"],"members":[{"depth":0,"name":"All Default or Custom fields","full_name":"[Default or Custom field].[All Default or Custom fields]","drillable":true,"type":"all","expanded":true,"drilled_into":false},{"depth":1,"name":"Custom field","full_name":"[Default or Custom field].[Custom field]","parent_full_name":"[Default or Custom field].[All Default or Custom fields]"}],"bookmarked_members":[],"current_page_members":["[Default or Custom field].[Custom field]"]},{"name":"Type","selected_set":["[Type].[All Types]"],"members":[{"depth":0,"name":"All Types","full_name":"[Type].[All Types]","drillable":true,"type":"all"}],"bookmarked_members":[],"current_page_members":["[Type].[All Types]"]}]},"options":{},"view":{"current":"line_chart","maximized":false,"line_chart":{"area":false,"swap_axes":false,"data_labels":true,"series_options":{"Field count":{"color":"#5A89CE"}}},"table":{}},"calculated_members":[]}
    },{
       "name": "Custom fields by Type",
       "result_view": "table",
       "definition": {"columns":{"dimensions":[{"name":"Measures","selected_set":["[Measures].[Field count]","[Measures].[Field Type]","[Measures].[Field Description]"],"members":[]}]},"rows":{"dimensions":[{"name":"Field","selected_set":["[Field.Type].[Field].Members"],"members":[],"bookmarked_members":[]}],"order_by":{"expression":["[Measures].[Field Default or Custom field]"],"order":"DESC"},"nonempty_crossjoin":true},"pages":{"dimensions":[{"name":"Default or Custom field","selected_set":["[Default or Custom field].[All Default or Custom fields]"],"members":[{"depth":0,"name":"All Default or Custom fields","full_name":"[Default or Custom field].[All Default or Custom fields]","drillable":true,"type":"all","expanded":true,"drilled_into":false},{"depth":1,"name":"Custom field","full_name":"[Default or Custom field].[Custom field]","parent_full_name":"[Default or Custom field].[All Default or Custom fields]"}],"bookmarked_members":[],"current_page_members":["[Default or Custom field].[Custom field]"]},{"name":"Type","selected_set":["[Type].[Type].Members"],"members":[{"depth":1,"name":"number","full_name":"[Type].[number]"}],"bookmarked_members":[],"current_page_members":["[Type].[number]"]},{"name":"Time","selected_set":["[Time].[Day].Members"],"members":[{"depth":4,"name":"Jul 03 2024","full_name":"[Time].[2024].[Q3 2024].[Jul 2024].[Jul 03 2024]"}],"bookmarked_members":[],"current_page_members":["[Time].[2024].[Q3 2024].[Jul 2024].[Jul 03 2024]"]},{"name":"Hour","selected_set":["[Hour].[Hour].Members"],"members":[{"depth":1,"name":"13","full_name":"[Hour].[13]"}],"bookmarked_members":[],"current_page_members":["[Hour].[13]"]}]},"options":{"total":"rows"},"view":{"current":"table","maximized":false,"table":{}},"calculated_members":[]}
    } ],
    "calculated_members": [{"name":"Field count","dimension":"Measures","formula":"Count(\n  Filter(\n    Descendants([Field].CurrentMember,[Field].[Field]),\n    [Measures].[Custom fields created] \u003e 0\n  )\n)","format_string":""},{"name":"Field Default or Custom field","dimension":"Measures","formula":"[Field].CurrentHierarchyMember.get('Default or Custom field')","format_string":""},{"name":"Field Type","dimension":"Measures","formula":"[Field].CurrentHierarchyMember.get('Type')","format_string":""},{"name":"Field Description","dimension":"Measures","formula":"[Field].CurrentHierarchyMember.get('Description')","format_string":""}]
  },{
    "cube_name": "Issue Type Management",
    "cube_reports": [ {
       "name": "Number of Issue Types",
       "result_view": "bar_chart",
       "definition": {"columns":{"dimensions":[{"name":"Measures","selected_set":["[Measures].[Issue Type count]"],"members":[]},{"name":"Is SubTask","selected_set":["[Is SubTask].[Standard]","[Is SubTask].[Sub-task]"],"members":[],"bookmarked_members":[]}]},"rows":{"dimensions":[{"name":"Time","selected_set":["[Time].[Day].Members"],"members":[],"bookmarked_members":[]},{"name":"Hour","selected_set":["[Hour].[Hour].Members"],"members":[],"bookmarked_members":[]}]},"pages":{"dimensions":[{"name":"Issue Type Scope","selected_set":["[Issue Type Scope].[Issue Type Scope].Members"],"members":[{"depth":1,"name":"Global","full_name":"[Issue Type Scope].[Global]"}],"bookmarked_members":[],"current_page_members":["[Issue Type Scope].[Global]"]}]},"options":{"total":"columns"},"view":{"current":"bar_chart","maximized":false,"bar_chart":{"stacked":true,"vertical":true,"swap_axes":false,"data_labels":false,"series_options":{"$total;$total":{"type":"scatter","color":"#006F92","dataLabelType":"top horizontal"},"Issue Type count;Standard":{"color":"#0093B5","dataLabelType":"middle horizontal"},"Issue Type count;Sub-task":{"color":"#00C7E5","dataLabelType":"middle horizontal"}}},"table":{}},"calculated_members":[]}
    } ],
    "calculated_members": [{"name":"Issue Type count","dimension":"Measures","formula":"Count(\n  Filter(\n    Descendants([IssueType].CurrentMember,[IssueType].[IssueType]),\n    [Measures].[Row count] \u003e 0\n  )\n)","format_string":""},{"name":"Standard","dimension":"Is SubTask","formula":"[Is SubTask].[false]","format_string":""},{"name":"Sub-task","dimension":"Is SubTask","formula":"[Is SubTask].[true]","format_string":""}]
  },{
    "cube_name": "Issue Type Scheme Management",
    "cube_reports": [ {
       "name": "Issue Type Schemes count by day",
       "result_view": "line_chart",
       "definition": {"columns":{"dimensions":[{"name":"Measures","selected_set":["[Measures].[Scheme count]"],"members":[]},{"name":"Issue Type Scheme Status","selected_set":["[Issue Type Scheme Status].[Issue Type Scheme Status].Members"],"members":[],"bookmarked_members":[]}]},"rows":{"dimensions":[{"name":"Time","selected_set":["[Time].[Day].Members"],"members":[],"bookmarked_members":[]},{"name":"Hour","selected_set":["[Hour].[Hour].Members"],"members":[],"bookmarked_members":[]}]},"pages":{"dimensions":[]},"options":{},"view":{"current":"line_chart","maximized":false,"line_chart":{"area":true,"stacked":true,"swap_axes":false,"data_labels":true,"series_options":{"Scheme count":{"color":"#FF983D"},"Active":{"color":"#79E2F2"},"Inactive":{"color":"#CAF8FF"}}},"table":{}},"calculated_members":[]}
    } ],
    "calculated_members": [{"name":"Scheme count","dimension":"Measures","formula":"Count(\n  Filter(\n    Descendants([Issue Type Scheme].CurrentMember,[Issue Type Scheme].[Issue Type Scheme]),\n    [Measures].[Issue Type Scheme count] \u003e 0\n  )\n)","format_string":""}]
  },{
    "cube_name": "Issue Type Screen Scheme Management",
    "cube_reports": [ {
       "name": "Issue Type Screen Schemes count by day",
       "result_view": "line_chart",
       "definition": {"columns":{"dimensions":[{"name":"Measures","selected_set":["[Measures].[Screen Scheme count]"],"members":[]}]},"rows":{"dimensions":[{"name":"Time","selected_set":["[Time].[Day].Members"],"members":[],"bookmarked_members":[]},{"name":"Hour","selected_set":["[Hour].[Hour].Members"],"members":[],"bookmarked_members":[]}]},"pages":{"dimensions":[]},"options":{},"view":{"current":"line_chart","maximized":false,"line_chart":{"area":false,"swap_axes":false,"data_labels":true,"series_options":{"Screen Scheme count":{"color":"#C28AE0"}}},"table":{}},"calculated_members":[]}
    } ],
    "calculated_members": [{"name":"Screen Scheme count","dimension":"Measures","formula":"Count(\n  Filter(\n    Descendants([IssueType Screen Scheme].CurrentMember,[IssueType Screen Scheme].[IssueType Screen Scheme]),\n    [Measures].[Issue Type Screen Scheme count] \u003e 0\n  )\n)","format_string":""}]
  },{
    "cube_name": "Status Management",
    "cube_reports": [ {
       "name": "Statuses by Category by day",
       "result_view": "line_chart",
       "definition": {"columns":{"dimensions":[{"name":"Measures","selected_set":["[Measures].[Number of Statuses]"],"members":[]},{"name":"Status Category","selected_set":["[Status Category].[Status Category].Members"],"members":[],"bookmarked_members":[]}]},"rows":{"dimensions":[{"name":"Time","selected_set":["[Time].[Day].Members"],"members":[],"bookmarked_members":[]},{"name":"Hour","selected_set":["[Hour].[Hour].Members"],"members":[],"bookmarked_members":[]}]},"pages":{"dimensions":[]},"options":{},"view":{"current":"line_chart","maximized":false,"line_chart":{"area":true,"stacked":true,"swap_axes":false,"data_labels":"values","series_options":{"DONE":{"color":"#86DBA6"},"IN_PROGRESS":{"color":"#79E2F2"},"TODO":{"color":"#EBECF0"}}},"table":{}},"calculated_members":[]}
    } ],
    "calculated_members": [{"name":"Number of Statuses","dimension":"Measures","formula":"Count(\n  Filter(\n    Descendants([Status].CurrentMember,[Status].[Status]),\n    [Measures].[Status Count] \u003e 0\n  )\n)","format_string":""}]
  },{
    "cube_name": "Workflow Management",
    "cube_reports": [ {
       "name": "Workflows by Status by day",
       "result_view": "line_chart",
       "definition": {"columns":{"dimensions":[{"name":"Measures","selected_set":["[Measures].[Workflow count]"],"members":[]},{"name":"Workflow Status","selected_set":["[Workflow Status].[Workflow Status].Members"],"members":[],"bookmarked_members":[]}]},"rows":{"dimensions":[{"name":"Time","selected_set":["[Time].[Day].Members"],"members":[],"bookmarked_members":[]},{"name":"Hour","selected_set":["[Hour].[Hour].Members"],"members":[],"bookmarked_members":[]}]},"pages":{"dimensions":[]},"options":{},"view":{"current":"line_chart","maximized":false,"line_chart":{"area":true,"stacked":true,"swap_axes":false,"data_labels":"values","series_options":{"Active":{"color":"#79E2F2"},"Inactive":{"color":"#DCBCED"}}},"table":{}},"calculated_members":[]}
    } ],
    "calculated_members": [{"name":"Workflow count","dimension":"Measures","formula":"Count(\n  Filter(\n    Descendants([Workflow].CurrentMember,[Workflow].[Workflow]),\n    [Measures].[Row count] \u003e 0\n  )\n)","format_string":""}]
  },{
    "cube_name": "Workflow Scheme Management",
    "cube_reports": [ {
       "name": "Workflow Scheme count by day",
       "result_view": "line_chart",
       "definition": {"columns":{"dimensions":[{"name":"Measures","selected_set":["[Measures].[Workflow Scheme count]"],"members":[]}]},"rows":{"dimensions":[{"name":"Time","selected_set":["[Time].[Day].Members"],"members":[],"bookmarked_members":[]},{"name":"Hour","selected_set":["[Hour].[Hour].Members"],"members":[],"bookmarked_members":[]}]},"pages":{"dimensions":[]},"options":{},"view":{"current":"line_chart","maximized":false,"line_chart":{"area":false,"swap_axes":false,"data_labels":true,"series_options":{"Scheme count":{"color":"#00C7E5"},"Workflow Scheme count":{"color":"#00C7E5"}}},"table":{}},"calculated_members":[]}
    } ],
    "calculated_members": [{"name":"Workflow Scheme count","dimension":"Measures","formula":"Count(\n  Filter(\n    Descendants([Workflow Scheme].CurrentMember,[Workflow Scheme].[Workflow Scheme]),\n    [Measures].[WF Scheme count] \u003e 0\n  )\n)","format_string":""}]
  } ]
}

​Best regards,
​Nauris

Does this work for Jira DC ???

Hi @nauris.malitis

Thanks a lot for this reply!
Will test this again in my test instance.

Regards,
Rodrigo Kondo Fernandes

1 Like

Hi @morjo02

The way this is currently configured it only works for Jira Cloud.
For DC at least the base URL will need to be changed. And if the return body of the endpoints are different than what is returned for Cloud, the mapping of data into the cube also needs to be updated.

Regards,
Rodrigo Kondo Fernandes

Thank you - I am receiving the following import error…

org.postgresql.util.PSQLException: ERROR: permission denied for database eazybi_jira