Co-authored by Elyes Gannoun, Product Manager, Elements
Elements, an Atlassian Gold Marketplace Partner, has over twelve years of expertise crafting applications for Jira and Confluence within the Atlassian ecosystem. The Elements suite: Elements Connect, Elements Copy & Sync, Elements Overview, Elements Publish, and Elements Spreadsheet, empowers organizations to transition from antiquated, manual processes to modern and efficient workflows built on the foundation of Jira and Confluence.

Elements Connect is one of Elements’ flagship applications, serving as a pivotal tool for seamlessly connecting and integrating data across various platforms within Jira. At Elements, we’ve chosen to align the evolution of this application closely with Atlassian’s strategic vision by seamlessly transitioning to the cloud.

That said, transitioning Elements Connect to the cloud was not easy. Navigating the technical nuances and differences between server and cloud environments posed a formidable challenge. However, we tackled these complexities head-on, exploring multiple solutions. 

In this blog post, we’ll discuss how we’ve brought Elements Connect to Cloud, from the earliest iteration on Connect to where we are today: bringing even greater value to our customers by adding features powered by Forge.

First attempt with the Atlassian Connect framework

When we built the Cloud version of our app on Connect, the primary objective was ensuring our migrating customers experience the same level of value they were used to on Server. Navigating the technical constraints inherent in the cloud environment required us to adapt. While we successfully connected the dots between customers’ favorite internal tools and Jira, introducing Connected items—while a promising concept—had certain limitations we weren’t entirely pleased with. These limitations stemmed from our reliance on the only available framework at the time, Atlassian Connect.

At the time, the only way to embed third-party apps in the issue view was via an iframe, excluding the creation process (except for portal requests), with minimal integration with Jira’s native features. This approach presented challenges, especially for one of our Server value propositions: Connected custom fields. These fields, whose options are fetched from an external data source, needed easy accessibility in the issue, filters, and dashboards. Unfortunately, our reliance on our own iframe made this impossible. 

To address this gap and enable the integration of real integrated custom fields, a critical component of our strategy, we needed to rethink our approach. Despite the challenges, we persisted in our pursuit. The breakthrough came during a hot summer day when we finally uncovered the missing piece of the puzzle: Forge custom fields.

The breakthrough came during a hot summer day when we finally uncovered the missing piece of the puzzle: Forge custom fields.

Alexandre Borel, Senior Software Developer

Forge custom fields, the missing piece

One of the advantages of Forge custom fields is their adaptability to various use cases. Whether it’s tracking external dependencies or aggregating data from different sources, these fields enable developers to design solutions that precisely match the requirements of their project.

Aggregating data from various sources is a powerful application of Forge custom fields. Whether you need to consolidate information from different tools or external systems, these fields provide a centralized interface to present this data consistently within Jira.

Rewrite everything in Forge or go for a blended architecture?

We had two options: rewriting everything with the Forge framework or developing an application with Forge that leverages our existing app built with the Atlassian Connect framework.

We opted for the latter, a helper app, which introduced new functionalities, including custom fields in Jira Software for both the creation and editing views. Additionally, this approach provided greater flexibility as some features are available in Forge, while others are in Atlassian Connect.

Digging into the details

Forge played a crucial role in seamlessly integrating Forge custom fields into the Jira issue creation view and improving integration in the editing view. Custom fields created by our app and those in Jira share the same representation.

We iteratively developed the application, starting with text-based custom fields without dependencies. Leveraging Forge UIModification and Events, we introduced interactivity between Jira’s custom fields and those created by our application.

Subsequently, we implemented Object Type custom fields to retrieve and store an (id, value) pair, enabling live updates to the custom field value when editing a Jira issue and a more advanced dependency mechanism.

Technical challenges

The main challenge was managing authentication and security between the main app and the helper app. We had to think through several operations:

  • How to provide a safe communication pathways between the two apps, preserving privacy of customer data
  • How to allow the helper app to interact with any Atlassian Connect backend endpoint, without having to modify the Atlassian Connect app code

To solve this challenge, we had to develop our own token-based authentication mechanism to ensure security, all before Forge remote was available. As we look forward, our ambition is to further streamline the authentication process with Forge remote functionality.

A key feature of our app is the ability to have dynamic field values that depend on the value of another issue field. For example, a list of teams that depends on the value of the Component custom field. This dynamism is possible thanks to the Forge UI modification module. While this works well in the create issue dialog, this module is not effective on the view issue screen. Consequently, when a field is edited from the issue view, the dependency mechanism is not triggered. We haven’t found a workaround for this, yet.

We also encountered certain obstacles with displaying our fields in the “Detail” view. Contrary to standard Jira fields, Forge fields do not support inline editing. Instead, modifications must be made through a dialog, leading to a less optimal user experience. However, we successfully replicated the editing experience found in the Create issue screen within this dialog, maintaining consistency in user interaction. We’ve heard that the Atlassian team has started to work on this and there is a public issue where everyone can track progress.

Another major limitation of the Forge custom fields is the inability to have them on a Jira Service Management portal. We are eagerly awaiting this ability to be added to the Forge custom fields by Atlassian!

What’s next

As we continue to innovate and evolve, our focus remains on delivering solutions that meet the needs of our users. Our journey is far from over, and we’re excited about the possibilities that lie ahead.

With Atlassian by our side, the future looks bright for Elements and the countless organizations we serve.

How We Added Value to Elements Connect with Forge Custom Fields