Rate this page:
This page explains how to set up the communication between your server app and the App migration platform.
Registering your server app for migration will allow you to:
The App cloud migration library is an interface component that allows developers to create migration listeners on their server apps. Only one listener should be registered per server app key, 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.
This section explains three options for a dependency that you can add to utilize the App cloud migration library. This addition will allow your server app to integrate with the Cloud Migration Assistants.
Make sure to always use the latest version available.
atlassian-app-cloud-migration-listener
This option has no dependency between Cloud Migration Assistants and your app. This is the simplest approach.
1 2<dependency> <groupId>com.atlassian</groupId> <artifactId>atlassian-app-cloud-migration-listener</artifactId> <version>1.0.3</version> </dependency>
See an example of how to use the atlassian-app-cloud-migration-listener
dependency.
atlassian-app-cloud-migration-tracker
This option does the following:
1 2<dependency> <groupId>com.atlassian</groupId> <artifactId>atlassian-app-cloud-migration-tracker</artifactId> <version>1.26.1</version> </dependency>
See an example of how to use the atlassian-app-cloud-migration-tracker
dependency.
atlassian-app-cloud-migration-osgi
This option has dependency between Cloud Migration Assistants and your app.
1 2<dependency> <groupId>com.atlassian</groupId> <artifactId>atlassian-app-cloud-migration-osgi</artifactId> <version>1.0.0</version> </dependency>
See an example of how to use the atlassian-app-cloud-migration-osgi
dependency.
See a comparison of the libraries.
A version catalogue and information about their end-of-life policy can be found on the library version page.
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:
Method | Description |
---|---|
onStartAppMigration | Core product migration is complete. Server app can begin migration at this point. |
getCloudAppKey | The cloud app key for where the migration is being exported to. |
getServerAppKey | The server app key for where the migration is being exported from.
When using atlassian-app-cloud-migration-listenerthis is not required if your app key is the same as your OSGi bundle name. |
getDataAccessScopes | The data access scopes required to access the migration mappings. |
1 2@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)); }
Use the class that you have implemented to register on the following gateway: AppCloudMigrationGateway
Listener | Description |
---|---|
registerListener | Allows you to register a single listener that will be invoked when the App migration platform is ready to begin app migration, which happens after the admin has migrated the core data (Jira/Confluence product data). |
1 2public class MyPluginComponentImpl implements MyPluginComponent, DisposableBean { private final AppCloudMigrationGateway gateway; public MyPluginComponentImpl(AppCloudMigrationGateway migrationGateway) { this.gateway = migrationGateway; this.gateway.registerListener(this); } }
The gateway will also expose the following methods to your app:
Method | Description |
---|---|
deregisterListener | Deregisters the listener |
getMigrationMappingByPage | Retrieves the product mapping on the server. Refer the 'Mappings' section that follows for further details. |
The example that follows uses deregisterListener
to deregister the listener.
1 2@Override public void destroy() throws Exception { gateway.deregisterListener(this); }
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: