Stuck on Server->Cloud app migration: app not found in Migration Assistant

I’m trying to migrate an app from Confluence Server to Confluence Cloud. So I’m following these instructions:

https://developer.atlassian.com/platform/app-migration/getting-started/

On the server side:

  1. I run the server with atlas-debug
  2. I’ve added atlassian-app-cloud-migration-tracker to pom.xml
  3. I’ve added com.atlassian.migration.app to DynamicImport and excluded it from regular Import
  4. I’ve added LocalCloudMigrationAccessor per examples in order to capture the CloudMigrationAccessor for use later – the code is exactly as in the samples and has been verified to work correctly, capturing a valid instance.
  5. I’ve added MyPluginComponentImpl per the examples, set the server/cloud app keys, registered the listener, and verified in the debugger that onRegistrationAccepted() is in fact called.
  6. I’ve enabled migration-assistant.app-migration.feature in /admin/darkfeatures.action
  7. I’ve run the Migration Assistant. On the “Assess your apps” page, it says “You don’t have any apps that need migrating with this tool.” Not sure what I’m missing for my app/plugin to show up here.

On the cloud side:

  1. I run the cloud app with npm start
  2. I’ve verified that it’s running on my cloud Confluence instance
  3. I’ve registered for the /enabled lifecycle event
  4. In that lifecycle event, I’ve successfully registered migration webhooks using an authenticated addon.httpClient and the JSON “endpoints” format with absolute URLs (directly under addon.config.baseUrl.href), and verified a successful response
  5. I’ve set up a POST route for the above-registered migration webhook endpoint, added a breakpoint and a log, and it’s never called. I assumed it’d at least be called with some sort of “are you ready/available for a migration?” question from the cloud instance.

Not sure what I’m missing. Any help or guidance would be appreciated. Thanks.

Hey @Steven - Does the app you are trying to migrate show up in the list of installed apps in the Universal Plugin Manager (Manage Apps) in Server?

Yes, when I run Confluence via atlas-debug as described above, the app I’m trying to migrate shows up in UPM under “User-installed” with License status of “Valid”.

I had a call with @Steven regarding this issue.

This issue has been sorted, it looked like it was due to packaging/refreshing and not directly related to app migration.

1 Like

Right, it was due to running with atlas-debug which does not allow the app to show up in Migration Assistant until atlas-package is first run.

I’ve gotten slightly past that point, so that the app shows up in the “Assess your apps” page in Migration Assistant, but shows false (red “x”) for both “Exists in cloud” and “Can be migrated”.

I’ve also looked into the cloudAddonKey in the Marketplace REST API but at the phase the server app is in the migration, only onRegistrationAccepted has been called, but onStartAppMigration has not yet been called, and it’s not clear to me whether this REST API endpoint is supposed to be called at this phase in the migration. If so, it wasn’t shown in any of the docs/guides/examples that I’ve seen so far.

One possible reason could be because the cloud app key and server app key are different, which is why I’m looking into that REST API call, to tell the Migration Assistant it’s the same app.

But it might be that I’m just missing some API call that I’m supposed to call inside onRegistrationAccepted, which logically makes sense, but again I have not seen it in any of the docs/guides/samples.

Hi @Steven,

Sorry I missed this, usually most migration questions are posted in the Cloud Migrations - The Atlassian Developer Community channel.

There are a few things to make sure an App Migration will occur.

First, make sure you have all the fields filled as documented in

then ensure you have the dark feature enabled as documented here

You can either test with development mode on or ensure your app is selected in App Assessment as Needed in Cloud.

If the server and cloud keys are different, make sure their correct in getCloudAppKey() and getServerAppKey().

Let us know how it goes.

James.