Developer
News and Updates
Get Support
Sign in
Get Support
Sign in
DOCUMENTATION
Cloud
Data Center
Resources
Sign in
Sign in
DOCUMENTATION
Cloud
Data Center
Resources
Sign in
Last updated Sep 23, 2026

Prepare your server app for Connect migration

This page explains how to prepare your server app for migration to Connect using the Atlassian app cloud migration library.

Connect end of support begins on 31 January 2027. This date was extended from December 2026 to give partners and developers additional time to prepare.

After this date, Atlassian will only address critical security vulnerabilities in Connect, and Connect feature deprecations will happen with little notice. Connect will not remain in a steady state after end of support.

For the full timeline, read Getting Ready for Connect End of Support.

Use the App cloud migration library

The App cloud migration library is an interface component that allows developers to create migration listeners on their server apps. Your app should only define server and cloud app key pair, however multiple server apps can send data to a single cloud app. The Cloud Migration Assistants (CCMA/JCMA) export the library's classes in the runtime. The library has no external dependencies, which avoids conflicts with the tech stack that your app uses.

Make sure you always use the latest version of the library.

1
2
3
4
5
6
<dependency>
  <groupId>com.atlassian</groupId>
  <artifactId>atlassian-app-cloud-migration-listener</artifactId>
  <version>1.2.1</version>
</dependency>

See an example of how to use the atlassian-app-cloud-migration-listener dependency.

See some examples.

A version catalogue and information about their end-of-life policy can be found on the library version page.

Implement the interface

You will need to implement a listener interface. Depending on the library you are using this can be DiscoverableListener, AppCloudMigrationListenerV1 or CloudMigrationListenerV1. The methods to be implemented are:

MethodDescription
onStartAppMigrationCore product migration is complete. Server app can begin migration at this point.
getCloudAppKeyThe cloud app key for where the migration is being exported to.
getServerAppKeyThe server app key for where the migration is being exported from. When using
atlassian-app-cloud-migration-listener
this is not required if your app key is the same as your OSGi bundle name.
getDataAccessScopesThe data access scopes required to access the migration mappings.
See an example
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@Override
public void onStartAppMigration(String transferId, MigrationDetailsV1 migrationDetails) {
    PaginatedMapping paginatedMapping = gateway.getPaginatedMapping(transferId, "confluence:page", 5);
    while (paginatedMapping.next()) {
        try {
            Map<String, String> mappings = paginatedMapping.getMapping();
            log.info("mappings = {}", new ObjectMapper().writeValueAsString(mappings));
        } catch (IOException e) {
            log.error("Error retrieving migration mappings", e);
        }
    }
}

@Override
public String getCloudAppKey() {
    return "my-cloud-app-key";
}

@Override
public String getServerAppKey() {
    return "my-server-app-key";
}

@Override
public Set<AccessScope> getDataAccessScopes() {
    return Stream.of(
            APP_DATA_OTHER, PRODUCT_DATA_OTHER, MIGRATION_TRACING_IDENTITY, MIGRATION_TRACING_PRODUCT
    ).collect(Collectors.toCollection(HashSet::new));
}

Test the server app implementation in your local environment

You can test your implementation and changes locally through these steps:

  • Add the dependency to use the App cloud migration library

  • Install and run the Jira or Confluence Cloud Migration Assistant (JCMA/CCMA)

  • Have the latest plugin of your server app available with the listener

Rate this page: