A Building Blocks Importer moves data into your app. Examples of use cases for importers are for optimised Data Center to Cloud migrations, for bringing data in to the new cloud site in a cloud-to-cloud migration, and for loading an export file for future Apps Backup/Restore Import/Export functionality.
The future vision is that, as long as you can create a compatible format (export contract), you will only need to write one Importer. However, we acknowledge that many app partners have invested heavily in building their classic Data Center to Forge migration pathways, and so we support 'hybrid' importers that run alongside the classic Data Center to Forge migration, and only import part of the total available data (for example, they might only use the Building Blocks approach for mapping files).
In the future, you will be able to declare that your importer exists, and provide its details in your Forge manifest. However, until such a feature is developed, the registration of Building Blocks importers and exporters is managed manually by Atlassian staff. If we have not already given you a contact in relation to your implementation of Building Blocks, please reach out via ecosystem partner support, who will be able to arrange for the App Migrations Platform team to support you.
The following information will be required:
Please be aware that in the future, you will be required to move the above information into your Forge Manifest.
When your app is registered as having a Forge Importer, you will start receiving a new event,
avi:ecosystem.migration:uploaded:event_file_list. This event is sent multiple times per App Data Movement - one for each 'File Group Label'.
You will need to register to receive the event in your Forge Manifest using the trigger module.
When you receive the event, it will have a 'key' field which provides a file key for the File List. It also provides a 'label' field identifying the File Group Label that the File List will be filtered to.
Use the 'key' field to request the File Listing from https://api.atlassian.com/migration/forge/v1/file-listing/download-url, with the fileKey in the request:
1 2{"fileKey": "key from event here"}
You will receive a JSON response with a URL: {"url": "https://some-url-including-signature-parameters"}. This URL is a pre-signed URL (i.e.
it includes credentials that grant access to download for a short period of time). Download it to obtain the File List.
The File List, it is a JSONL with one record per line and no header:
1 2{"fileId": "someid", "fullName": "a name describing the file", "incremental": "false", "createdAt": "2026-04-16T04:55:33.000Z", "sourceAppARI": "", "sourceLocationARI": "", "destinationLocationARI": "", "properties": {}}
In the above:
ari:cloud:identity:{siteId}:forge-installation/{appId}/{envId} where siteId, appId and envId are UUIDs. You
should use it only for metadata (logging etc...) to ensure that your importer works for data from multiple sources. Note that this field
is nullable; not all data originates from an app (for example, mappings do not).You can make a POST request to https://api.atlassian.com/migration/forge/v1/event-file/urls. In the body, you need to provide 1-100 Event File IDs (taken from the fileId in the File List):
1 2{"eventFileIds": ["someid"]}
In the response, you'll get back a list of URLs like this:
1 2{ "eventFiles": [ {"fileId": "someid", "presignedUrl": "https://example.org/download-url?authorisation_parameters"} ] }
The response URLs are presigned (contain credentials in the parameters that allow you to download for a short period after it has been generated).
Event Files are JSONL files. The first JSON row is a 'header' row containing metadata about the file, while subsequent rows contain records (representing an upsert or removal of data). The exact format of the JSON within the Event File is dependent on the type of event file.
As an Importer, you are expected to acknowledge every Event File, even if it is one you decide not to process. Doing so for every single event file in the migration will trigger the completion of the import.
To acknowledge an Event File, use the https://api.atlassian.com/migration/forge/v1/event-files/status endpoint with a request of the following type:
1 2{ "transferId": "the-app-data-movement-uuid", "eventFileIds": ["eventFileId1", "eventFileId2"], "eventStatus": "SUCCESS" }
Note that you can acknowledge up to 100 event files in the same request. The eventStatus can be either SUCCESS (appropriate if you either did nothing, or processed the event file successfully) and FAILED (appropriate if you tried and failed to process the event file, and so a failure should be returned back to the user initiating the Movement).
Rate this page: