RFCs are a way for Atlassian to share what we’re working on with our valued developer community.
It’s a document for building shared understanding of a topic. It expresses a technical solution, but can also communicate how it should be built or even document standards. The most important aspect of an RFC is that a written specification facilitates feedback and drives consensus. It is not a tool for approving or committing to ideas, but more so a collaborative practice to shape an idea and to find serious flaws early.
Please respect our community guidelines : keep it welcoming and safe by commenting on the idea not the people (especially the author); keep it tidy by keeping on topic; empower the community by keeping comments constructive. Thanks!
Summary of Project:
The cross-product project aims to enable developers to build and distribute Forge apps that work across multiple products. This post explains our approach to tackling the problem including some high-level technical designs. We’re looking for feedback to make sure we build the best possible solution. Please note that as we continue to evolve the below outlines principles can change over time.
- Publish: Feb 11 2025
- Discuss: Feb 25 2025
- Resolve: Mar 11 2025
Problem
Currently, Forge apps can be installed across various products, but they cannot be marketed as a single cross-product app on the Atlassian Marketplace.
Developers have the option to distribute their apps directly; however, this approach limits their app’s visibility and potential sales opportunities.
For those interested in selling cross-product apps on the Marketplace, a workaround involves creating a “helper app.” This design allows the ‘helper app’ to proxy API calls to a secondary product on behalf of the “primary” app. Unfortunately, this method introduces complications, such as the necessity to eliminate egress for cross-product apps utilizing the helper app workaround for Runs on Atlassian.
Through this RFC, we propose a more flexible installation architecture that enables a single app to be installed in multiple locations simultaneously. This solution would allow the app to utilize APIs and extension points from multiple Atlassian products and platform components, providing a genuine cross-product app experience for both, customers and partners.
Who are we solving for?
Customers
Admins need the ability to explore applications that deliver enhanced value across various Atlassian products and their own data. This capability is increasingly vital as the evolving Atlassian System of Work will provide more options over time to connect Atlassian portfolio as one powerful, interconnected system that serves every team within an organization. Apps will play an important role to facilitate these connections and customers will expect to find such apps on the Marketplace.
Partners
Creating applications that facilitate communication across products or platform components is a significant requirement for partners. This capability enhances the overall user experience for customers and thus opens up new revenue opportunities for partners.
For instance, Rovo’s user experience is integrated into the broader Atlassian platform, rather than being limited to a single product. With cross-product applications, users can utilize a custom Rovo action in Confluence to retrieve data from Jira seamlessly.
Another compelling example is the Forge platform extension. Applications that span multiple platform components will unlock an exciting realm of cross-product functionalities for customers. Imagine a Forge app that connects visually appealing Atlassian Home dashboards with content from Jira and Confluence. Additionally, integrating Teamwork Graph into cross-product apps could lead to more powerful experiences, leveraging AI, search, and automation across Atlassian products.
Proposed Solution
General
Every app installation retains a primary installation context, as it has today. Secondary installations context(s) determine which additional product(s) the app can extend and communicate with.
Installations may have zero or more secondary installation contexts. Importantly, these share the same installation ID as the primary context.
To start with, we will allow developers to build and deploy apps that operate across multiple products within the same site with a single installation. For our planned EAP milestone the installation management will be done entirely via the CLI.
Only site based products such as Confluence, Jira, Compass (possibly Teamwork Graph) are in scope.
Basic principles
- Cross-product applications will exclusively be accessible to Forge apps; they will not function with harmonized applications that utilize Connect modules.
- Once installed, the primary installation context cannot be altered unless there are no existing installations of the app in the specified environment.
- The primary context governs the processes of installation, upgrade, and uninstallation. Consequently, when a primary context is uninstalled, all associated secondary contexts will also be removed.
- Additionally, the Data Residency status of a cross-product app is contingent upon the primary installation context.
Licensing
The billing structure will be tied to the primary installation context, meaning that the license will depend on the number of users within the main product where the app is installed in.
As we advance in our efforts to provide more flexible licensing options, we will consider the possibility of implementing various licensing models into the cross-product app context. For example, a cross-product app with the primary Jira installation context could be ‘licensed user’ billed and have a secondary context in Confluence that is ‘usage’ billed.
However, different licensing options for components of a cross-product app will not be included in the initial phase of cross-product app development.
Storage
Data Residency
Currently, apps are aligned with the product and pinned to the product location selected by the Admin in admin.atlassian.com.
For cross-product app data stored in Forge Storage, secondary context installations will adhere to the primary context installation. For example, if the primary product is pinned to Australia and the secondary product is pinned to the EU, all cross-product app data will be stored in Australia.
When primary and secondary products are pinned to different regions, the latency of storage for the secondary installations will be unaffected. However, there is an expected latency of around 100ms for every product API call against a pinned secodanry context in a different region.
We will ensure that Admins are well-informed about this when they modify their product’s data residency region.
Product delete and soft delete
Each cross-product app context shares a single installationId, which governs the soft delete and restore processes.
The single installationID is related to one shared storage for primary and secondary contexts. Therefore, removing a secondary product will not remove app data relating to the secondary context.
App data will only undergo soft deletion or restoration if the primary product context is deleted or restored.
Compute
Admins have the flexibility to install and uninstall products at any time, which may affect your cross-product app. To assist you, we can provide information regarding the product context in which the app is installed during runtime. This could be achieved by passing the context information through the app context API.
Webtriggers
All product contexts refer to a single installation ID for cross-product applications. We do not anticipate any changes to the current process for setting up web triggers. To obtain the web trigger URL for a specific site and product, simply copy the installation ID and execute the following command to generate the web trigger URL.
1 forge webtrigger
App Management
Admins will have the capability to view and manage cross-product applications through the Connected App screen at admin.atlassian.com. Both, primary and secondary installation contexts will be displayed, allowing Admins to manage them effectively. Although we do not have any designs to share at this moment, Admins will be able to view, upgrade, and uninstall their cross-product apps within the Connected Apps section.
Uninstalling secondary context installations will be permitted at any time, and new contexts can be added as they become available. Additionally, all products where the app is installed will be updated when an app update is executed.
App discoverability
Customers will eventually have the ability to discover and install (or request) cross-product apps via the Atlassian Marketplace.
Currently, we are not suggesting a specific category for cross-product apps within the Marketplace. Instead, these applications can be found through the primary product, where additional cross-product benefits will be highlighted.
Proposed Milestones for cross-product apps
Milestone 1: Developer EAP
In this milestone, we will establish the groundwork for cross-product app development. Developers will have the capability to create and install cross-product apps on products within a single site, such as Jira, JSM, Compass, and Confluence (potentially including Teamwork Graph).
Forge Create Mock Up
We will look at introducing new templates to create cross-product app experiences via forge create
.
Manifest
The manifest for a XPA installation could look like this:
Forge Install Mock Up
The primary installation context is defined in the manifest, establishing its configuration at the time of deployment. Consequently, during the installation phase, the primary product will be displayed by default in the CLI wizard or when arguments are supplied to your code.
Once the primary installation is done the secondary installation context(s) can be selected and installed.
Milestone 2: Preview
In this milestone, we will introduce the capability to distribute cross-product apps via a direct distribution link and monitor apps in the Developer Console. Users will have the option to filter installations and logs by product.
For Admins cross-product apps will be accessible through admin.atlassian.com, where they can be viewed and managed, along with their primary and secondary installation contexts.
Milestone 3: GA
In this milestone, apps will become discoverable on the Marketplace and can be installed by Admins or requested by users.
Milestone 4: Post GA
Following the GA release, we will look into expanding cross-product apps to non-site-based products like Bitbucket.
Actions
We welcome your thoughts on this RFC and, in particular, would greatly appreciate your feedback on the following questions:
- How would you like Admins to discover your cross-product apps on Marketplace?
- How would you like to set the pricing for your cross-product app?
- Are there specific cross-product app templates that you would like to see available?
- Are you concerned about above mentioned latency issues arising from primary and secondary contexts being pinned to different regions?
- Do you want to know at runtime what product workspaces your app has been installed into - such as when secondary installation contexts are added or removed?
- Would you consider to migrate existing cross-product apps (with separate installation IDs) to the new cross-product app architecture in the future? If so, what support from Atlassian would you expect for such transitioning effort?
Our objective is to launch an Early Access Program (EAP) by April 2025. If you would like to participate in the EAP, please sign up here.
We are looking forward to your feedback!