Thank you for your detailed input @osiebenmarck.
The list would be consistent with that used for Data Center to Cloud migrations - which can be viewed here: https://developer.atlassian.com/platform/app-migration/mappings/#mappings-namespaces-and-entities
Not every identifier would change in every migration.
I also do not understand how the mapping would happen in Solution A: Why would the vendor provide the regex to find an identifier – wouldn’t Atlassian know which identifiers need to be replaced? Or is this meant to help Atlassian find a place where the identifier is that needs replacement?
It is the latter - in Solution A, partners just tell us where the identifiers are (and what type of identifier), and we take it from there.
We would obviously prefer to not implement either of these two solutions. If we had to, I would likely opt for Solution B, as that one seems like it will be easier to test. The downside being, that we will incur cost – potentially a lot of costs as you already said. But, as we do not know which identifiers might change and how the API looks that we’d need to work with, it is impossible for us to give a preference.
That is a fair point - I assume particularly you’d be interested in being able to write local unit / integration tests for migrations?
For manual testing, you could do a Commercial Cloud to Commercial Cloud migration.
For local testing, would having some kind of downloadable Atlassian provided test harness that can read the manifest file, and transform identifiers locally using mock mappings help you?
Putting mappings in the manifest is not really convenient, I’d prefer it if we could put those mappings in a separate file, like we can already do with Rovo agent prompts. Also, as @AndreasEbert already mentioned, since when do we have JSON manifests in Forge?
Sorry about saying JSON, I’ve updated it to say YAML!
So just to understand further, would you ideally prefer to have those files referenced from the manifest, and deployed with the manifest, it’s just they are in a separate file, or as a completely separate thing?
To wrap up, I am worried that this would introduce risks, instability and bugs into our products; the RFC does not even mention a way to test the migration. And as @remie pointed out already: We will need to test whatever we implement before any code goes live. This goes for either solution.
If this went live today as is, we would likely opt-out and ask our customers to reconfigure on the new instance.
And just to understand further, is that an option because you don’t have a lot of data beyond simple configuration in any of your apps? Or perhaps the data you have beyond configuration data is only ‘cache’ data where deleting and recreating doesn’t have a big impact on customers? Would having an explicit way to signal that to upgrading customers, and perhaps even purge unwanted cache data on migration simplify things for you?