CelesteCS
  • Home
  • Products
    • Conditions for Confluence
      • End User License Agreement
    • JQL Extensions for JIRA
      • End User License Agreement
    • Math for Confluence
      • End User License Agreement
    • Reporting for Confluence
      • End User License Agreement
    • Rotator for Confluence
  • Support
    • Frequently Asked Questions
    • Documentation
      • Conditions for Confluence
        • Overview
        • How it works
        • How to start
        • Advanced usage examples
        • Conditional Rule macro
        • Conditional 2-Color Scale macro
        • Conditional 3-Color Scale macro
        • Conditional Data Bar macro
        • Conditional Icon Set macro
        • Conditional Rules Manager macro
        • Security and Privacy Statement
        • End User License Agreement
        • Migrating from Data Center to Cloud
      • JQL Extensions for JIRA
        • Overview
        • Functions
        • How to start
      • Reporting for Confluence
        • Overview
        • Several simple steps to create a report
        • How it works
        • Example: Creating report on Confluence pages
        • Example: Creating report on Jira issues
        • Example: Creating Jira issue tree
        • Example: Listing Jira issues by assignee
        • Tips and tricks
        • Operations
        • Functions
        • Reporting Confluence Data Provider macro
        • Reporting Jira Data Provider macro
        • Reporting Json Data Provider macro
        • Reporting List Item macro
        • Reporting List View macro
        • Reporting Table Item macro
        • Reporting Table View macro
        • Security and Privacy Statement
        • End User License Agreement
        • Migrating from Data Center to Cloud
      • Math for Confluence
        • Overview
        • How to start
        • Numerical Expression macro
        • Chart macro
        • Parameters
        • Operations
        • Functions
          • Math and trigonometry functions
            • SUM function
        • Adding Table Values as Operands
        • Adding Other Macros as Operands
        • Security and Privacy Statement
        • End User License Agreement
      • Rotator for Confluence
        • Overview
        • Installation
        • Usage
        • Lossless Rotation
        • Orientation
        • Copying Image Metadata
        • Performing Operations
        • Security and Privacy Statement
        • End User License Agreement
    • Product Updates
    • Contact Support
  • Blog
    • Formatting numbers, currency and dates automatically in your report columns
    • Turning a JSON export into a Confluence table with Reporting Json Data Provider
    • Building a multi-level Jira issue tree with Reporting List View
    • Formatting several tables on one page with a single Conditional Rules Manager
    • Comparing two columns instead of a fixed value with formula-based rules
    • Highlighting blank or missing values before they become a problem
    • SUMIF, COUNTIF and AVERAGEIF: conditional aggregates without extra columns
    • Reading Jira custom fields that the Jira Issues macro won't show you
    • Calculating one column from another: per-row formulas like price times tax
    • Adding a running total to any Confluence table
    • Sorting, deduplicating and limiting your reports without extra macros
    • Reporting on what Confluence Analytics can't show you: page creators and last editors
    • Beyond the Jira Issues macro: fully custom Confluence reports from Jira data
    • Turning table values into colored status lozenges automatically
    • Excel-style conditional formatting in Confluence: 3-Color Scales, Data Bars and Icon Sets
    • Highlighting top performers, overdue dates and duplicates with the new Conditional Rule conditions
    • Red, amber, green: highlighting Jira Epic status automatically in Confluence tables
    • Building a live Jira progress dashboard with CelesteCS Math
    • Charting your Confluence tables with the new Chart macro
    • Avoiding StackOverflowError from self-referencing Chart and Numerical Expression macros
    • Text highlight and replacement with CelesteCS Conditions
    • Performing calculations over Jira issue fields
    • Determining the field ID by its name
    • Collecting logs for CelesteCS Math
    • CelesteCS Math Plugin: Charts
    • CelesteCS Math Cloud Plugin: Plugin permissions and "Read own page" error
    • CelesteCS Math Plugin: Working with Datetime values
    • CelesteCS Math Plugin: Working with Tables
    • CelesteCS Math Cloud Plugin: Quick Start Guide
    • Bulk-fixing sideways phone photos in Confluence without losing quality
    • Working with clones, duplicates and blockers using CelesteCS JQL Extensions
    • Flattening an Epic-and-Stories tree into one report with jqlx.flattenedTwoLevelTree
    • Finding issues that fell through the cracks with CelesteCS JQL Extensions
  • Company
    • About
    • Contact Us
    • SLA

Blog

CelesteCS Cloud plugins: Jira integration reliability improvements

We've shipped a reliability update to the Jira integration in both CelesteCS Math for Confluence Cloud and CelesteCS Reporting for Confluence Cloud, live now - no action needed on your side, it applies automatically.

What changed:

  • Reporting for Confluence Cloud - the Jira Data Provider macro now returns the correct set of issues for every JQL query. Previously, queries could return more rows than expected, with some issues repeated, because of how Jira Cloud's newer search API handles paging internally. This is fixed - each query now returns exactly the issues that match, once each.
  • Math for Confluence Cloud - the Jira issue-field functions (JIRAISSUEFIELDVALUES, JIRAISSUEFIELDVALUESBYFIELDID) and Jira issue-counting are more reliable against larger result sets for the same underlying reason.
  • Custom field IDs with underscores are now fully supported. If you reference a Jira custom field by its ID (for example customfield_10123) in Reporting's Jira Data Provider fields parameter, this previously failed validation - it now works as expected.

These are backend reliability fixes to functionality that's already documented - see the Jira issue-field functions in our Math function reference and the Reporting Jira Data Provider macro documentation for full usage details.

As always, if you run into anything unexpected with Jira data in your Confluence Cloud reports, let us know.

Bulk-fixing sideways phone photos in Confluence without losing quality

Phone cameras record which way up a photo was taken in an EXIF orientation tag rather than physically rotating the pixels, so a picture that looks upright on the phone can land sideways once it is uploaded to a Confluence page. Rotating it by hand in an external editor and re-uploading works, but it re-compresses the JPEG and throws away the original metadata. CelesteCS Image Lossless Rotator fixes this directly on the Confluence page instead.

The one-click fix

Open the page for editing, click the sideways image to bring up its property panel, and choose Rotate according to image orientation. The plugin reads the EXIF Orientation tag written by the camera and rotates the image to match – no need to know in advance whether it was 90, 180 or 270 degrees off.

Why it stays lossless

Ordinary JPEG rotation has to decode the image to pixels and re-encode it, which degrades quality a little every time. CelesteCS Image Lossless Rotator instead rotates the compressed 8x8-to-16x16-pixel blocks that make up a JPEG file directly, so the image data itself is never re-compressed. See Lossless Rotation for the technical explanation of why this works for JPEG but not for every format equally.

Keeping the metadata a photographer actually cares about

Rotating an image normally leaves its EXIF, IPTC and XMP metadata behind, but CelesteCS Image Lossless Rotator copies that metadata across to the rotated file and updates the fields that depend on orientation, such as width and height. That means author credit, capture date and GPS location survive the rotation intact – see Copying image metadata for exactly which tags are preserved.

Because the whole operation runs as a REST call on the Confluence server itself, the original image file never has to round-trip to the browser and back, which also makes it practical to fix a whole page of misrotated photos in a couple of clicks rather than one download-edit-upload cycle per image.

Working with clones, duplicates and blockers using CelesteCS JQL Extensions

toto togel

Jira lets teams link issues as clones, duplicates or blockers, but finding all of them from the issue navigator usually means clicking through issues one at a time. CelesteCS JQL Extensions adds dedicated functions for exactly these three relationships, plus a way to spot suspicious duplicate data before it turns into a linked duplicate in the first place.

Following a specific relationship

  • issue in jqlxClonesOf("key = APP-100") – every issue cloned from APP-100.
  • issue in jqlxDuplicatesOf("project = SUP and status = Open") – open duplicates of the matched issues, useful for a weekly support triage.
  • issue in jqlxBlockersOf("project = APP and status = \"In Progress\"") – whatever is blocking today’s in-progress work, a natural stand-up query.

Catching duplicate data before someone links it manually

Sometimes the same request comes in twice under different summaries, with nothing linking them yet. jqlxIssuesWithDuplicateFieldValues flags issues that already share a field value someone would expect to be unique:

  • issue in jqlxIssuesWithDuplicateFieldValues("project = SUP and status != Closed", "Customer Reference") – two open tickets referencing the same customer ticket number, a likely duplicate report.

The mirror function, jqlxIssuesWithUniqueFieldValues, is handy for a data-quality sweep in the other direction – for example confirming that every issue in a migration batch really does carry a distinct external ID before the import is trusted.

All of these accept the same jqlQuery-first pattern as the rest of the plugin, so they combine freely with ordinary JQL clauses and with the other jqlx-prefixed functions functions described in the Functions reference.

Flattening an Epic-and-Stories tree into one report with jqlxFlattenedTwoLevelTree

situs toto

kampungbet

A common reporting request is a single table that lists an Epic together with all of its Stories, rather than two separate lists that have to be cross-referenced by hand. JQL alone cannot express “this issue, plus everything linked to it” – but the jqlxFlattenedTwoLevelTree function from CelesteCS JQL Extensions does exactly that.

The query

  • issue in jqlxFlattenedTwoLevelTree("project = APP and type = Epic and status != Done")

This returns every open Epic in the project and every issue directly linked to those Epics (their Stories, in a typical Jira setup), combined into one flat list with no duplicates – even though the JQL query itself only asked for Epics.

Narrowing it to a specific link type

If the instance has several link types and only the Epic-Story relationship should be flattened, pass it explicitly:

  • issue in jqlxFlattenedTwoLevelTree("project = APP and type = Epic and status != Done", "is Epic of", "Outward")

Turning the flat list into a table

Feed that same JQL query into a CelesteCS Reporting Jira Data Provider macro, and a Reporting Table View underneath it. Inside the Reporting Table Item body, a formula such as IF(CurrentItem.fields.issuetype.name = "Epic", "", REPT(CHAR(160), 4)) & CurrentItem.key indents Stories under their Epic visually, giving a genuinely hierarchical-looking report built from a single flat data source – no separate query per Epic required.

For a deeper look at building multi-level trees with actual parent-item references rather than indentation, see Building a multi-level Jira issue tree with Reporting List View.

Finding issues that fell through the cracks with CelesteCS JQL Extensions

kampungbet

Plain JQL can filter issues by field values, but it has no way to ask questions about an issue’s attachments, comments or subtasks as a group – things like “nobody has replied in three weeks” or “every subtask is already done”. CelesteCS JQL Extensions adds a set of jqlx-prefixed functions functions that answer exactly this kind of question, right inside the Jira issue navigator.

Issues nobody has followed up on

  • issue in jqlxIssuesWithCommentCountEqualTo("project = SUP and status = \"Waiting for support\"", 0) – support tickets sitting without a single reply.
  • issue in jqlxIssuesWithAllCommentsCreatedBefore("project = SUP and status = Open", "-14d") – issues where even the newest comment is over two weeks old.

Subtasks that quietly block a story from closing

  • issue in jqlxIssuesWithSubTaskCountGreaterThan("project = APP and type = Story", 0) – stories that actually have subtasks, as a starting point.
  • issue in jqlxIssuesWithAllSubTasksCreatedByUser("project = APP and type = Story", "jdoe") – stories whose subtasks were all created by one person, often a sign they were never triaged as a team.

Attachments that are missing or stale

  • issue in jqlxIssuesWithAttachmentCountEqualTo("project = SUP and \"Attachment required\" = Yes", 0) – tickets that should have a screenshot or log file but don’t.
  • issue in jqlxIssuesWithAnyAttachmentsCreatedBefore("project = SUP and status = Open", "-30d", "log") – open issues carrying a log file older than 30 days, a good candidate list for “please re-attach current logs”.

Every one of these still returns standard Jira issues, so the result can be saved as a filter, dropped into a dashboard gadget, or reused as the jqlQuery parameter of a CelesteCS Reporting Jira Data Provider macro to turn the same logic into a Confluence report. The full function reference, with every parameter explained, is in the JQL Extensions Functions documentation.

More Articles …

  1. Formatting numbers, currency and dates automatically in your report columns
  2. Turning a JSON export into a Confluence table with Reporting Json Data Provider
  3. Building a multi-level Jira issue tree with Reporting List View
  4. Formatting several tables on one page with a single Conditional Rules Manager
Page 1 of 7
  • Start
  • Prev
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • Next
  • End
  • Formatting numbers, currency and dates automatically in your report columns
  • Turning a JSON export into a Confluence table with Reporting Json Data Provider
  • Building a multi-level Jira issue tree with Reporting List View
  • Formatting several tables on one page with a single Conditional Rules Manager
  • Comparing two columns instead of a fixed value with formula-based rules
  • Highlighting blank or missing values before they become a problem
  • SUMIF, COUNTIF and AVERAGEIF: conditional aggregates without extra columns
  • Reading Jira custom fields that the Jira Issues macro won't show you
  • Calculating one column from another: per-row formulas like price times tax
  • Adding a running total to any Confluence table
  • Sorting, deduplicating and limiting your reports without extra macros
  • Reporting on what Confluence Analytics can't show you: page creators and last editors
  • Beyond the Jira Issues macro: fully custom Confluence reports from Jira data
  • Turning table values into colored status lozenges automatically
  • Excel-style conditional formatting in Confluence: 3-Color Scales, Data Bars and Icon Sets
  • Highlighting top performers, overdue dates and duplicates with the new Conditional Rule conditions
  • Red, amber, green: highlighting Jira Epic status automatically in Confluence tables
  • Building a live Jira progress dashboard with CelesteCS Math
  • Charting your Confluence tables with the new Chart macro
  • Avoiding StackOverflowError from self-referencing Chart and Numerical Expression macros
  • Text highlight and replacement with CelesteCS Conditions
  • Performing calculations over Jira issue fields
  • Determining the field ID by its name
  • Collecting logs for CelesteCS Math
  • CelesteCS Math Plugin: Charts
  • CelesteCS Math Cloud Plugin: Plugin permissions and "Read own page" error
  • CelesteCS Math Plugin: Working with Datetime values
  • CelesteCS Math Plugin: Working with Tables
  • CelesteCS Math Cloud Plugin: Quick Start Guide
  • Bulk-fixing sideways phone photos in Confluence without losing quality
  • Working with clones, duplicates and blockers using CelesteCS JQL Extensions
  • Flattening an Epic-and-Stories tree into one report with jqlx.flattenedTwoLevelTree
  • Finding issues that fell through the cracks with CelesteCS JQL Extensions

Products

  • Conditions for Confluence
  • JQL Extensions for Jira
  • Math for Confluence
  • Reporting for Confluence
  • Rotator for Confluence

Support

  • FAQ
  • Documentation
  • Product Updates

Company

  • About

Contacts

  • info@celestecs.com
  • sales@celestecs.com
  • support@celestecs.com
 
 
Bootstrap is a front-end framework of Twitter, Inc. Code licensed under MIT License. Font Awesome font licensed under SIL OFL 1.1.