The event-file-list-uploaded event is a specialized notification used for the simplified app migration path. It signals that a collection of data files has been successfully exported from the
DC instance and is now available for the cloud application to consume.
This is sent through as avi:ecosystem.migration:uploaded:event_file_list which can be added in your manifest.yml file.
event-file-list-uploaded event.key.SUCCESS or FAILED) for the parts back to the migration service (see Report Event File Status).The event is delivered via this structure:
| Field | Value / Description |
|---|---|
eventType | event-file-list-uploaded |
key | The path to the listing file (e.g., listing/uuid-metadata.json). |
label | The type of data being notified (e.g., MAPPINGS, DATABASE, BINARY). |
transferId | The unique ID of the application's transfer. |
migrationDetails | Contextual info about the overall migration. |
movementDetails | Contextual info about the data that is moved. |
isComplete | Whether this includes all data |
Example event-file-list-uploaded event
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{ "eventType": "event-file-list-uploaded", "transferId": "ed66d0a8-6009-484c-aced-298e3c0e9bbf", "migrationDetails": { "migrationId": "6fff0c25-7192-4ce1-9c79-99296b7a0daa", "migrationScopeId": "23b5768f-d45b-4291-8d22-fd0fcd341801", "createdAt": 1788331184581, "cloudUrl": "https://destination-site.atlassian.net", "name": "jira-migration" }, "key": "some-file-key", "label": "MAPPINGS", "messageId": "49395bf3-ca51-42e9-8ee6-e5a0c5fe9404", "movementDetails": { "appDataMovementId": "ed66d0a8-6009-484c-aced-298e3c0e9bbf", "sourceLocation": { "cloudUrl": "https://source-site.atlassian.net", "type": "cloud" }, "destinationLocation": { "cloudUrl": "https://destination-site.atlassian.net", "type": "cloud" }, "createdAt": 1788331184581 }, "isComplete":true }
During an incremental migration, an application will receive multiple event-file-list-uploaded
notifications at different stages of the process.
Applications using incremental migrations should not assume that a single event-file-list-uploaded event marks the completion of
the entire migration; rather, it marks the availability of a specific category of data (such as Mappings or Binary). The final
event file for a specific category of data will have isCompleted: True set within the payload.
The listing file is a JSONL (JSON Lines) file where each line is a valid JSON representing metadata for one Event File.
Example entry (formatted for readability):
1 2 3 4 5 6 7 8 9 10 11 12 13{ "fileId": "uuid-of-the-file", "fullName": "path/to/data-part-1.json", "incremental": true, "createdAt": "2024-03-26T10:00:00Z", "sourceAppARI": "ari:cloud:ecosystem::app/uuid", "sourceLocationARI": "ari:cloud:jira::site/uuid", "destinationLocationARI": "ari:cloud:jira::site/uuid", "exporterARI": "ari:cloud:ecosystem::exporter/uuid", "properties": {"migrationId": "uuid"}, "label": "MAPPINGS" }
| Field | Type | Description |
|---|---|---|
fileId | string (UUID) | Unique identifier for the specific data part. |
fullName | string | Original filename or identifier from the DC instance. |
label | string | The type of data being notified (e.g., MAPPINGS, DATABASE, BINARY). |
incremental | boolean | Whether the event file contains data that was captured during a full initial snapshot of a datacenter instance, or data that is captured as an incremental change to the initial snapshot. |
createdAt | string (ISO 8601) | When the part was generated on the DC instance. |
sourceAppARI | string (ARI) | The ARI of the source application. |
sourceLocationARI | string (ARI) | The ARI of the source location (e.g. Jira site). |
destinationLocationARI | string (ARI) | The ARI of the destination location (e.g. the target cloud Jira site). |
exporterARI | string (ARI) | The ARI of the component that performed the export. |
properties | object (JSON) | Metadata properties based on the label (e.g., migration scope). This can be represented as an ObjectNode. |
Apps cannot download data parts directly using the fileId. They must first request a presigned download URL from the migration service.
Retrieve a presigned URL to download a File Listing.
Endpoint: POST /app/migration/forge/v1/file-listing/download-url
Request body:
1 2 3 4{ "fileKey": "key-from-webhook" }
Response body:
1 2 3 4{ "url": "https://presigned.url/..." }
The response URL is presigned (contain credentials in the parameters that allow you to download for a short period after it has been generated).
Retrieve a presigned URL to download an Event File.
Endpoint: POST /app/migration/forge/v1/event-file/urls
Request body:
1 2 3 4{ "eventFileIds": ["uuid-1", "uuid-2"] }
Response body:
1 2 3 4 5 6 7 8 9{ "eventFiles": [ { "fileId": "uuid-1", "presignedUrl": "https://host.domain/..." } ] }
After processing the downloaded data parts, the app must report the outcome for those files back to the migration service so the platform can track progress and completion.
Endpoint: POST /app/migration/forge/v1/event-files/status
Request body:
1 2 3 4 5 6{ "appDataMovementId": "app-data-movement-id-from-webhook", "eventFileIds": ["uuid-1", "uuid-2"], "status": "SUCCESS" }
| Field | Type | Description |
|---|---|---|
appDataMovementId | string | The identifier of the transfer. This is available in the field named appDataMovementId under movementDetails from the initial event. |
eventFileIds | array of string | The fileId values of the parts whose status is being reported. |
status | string (enum) | The processing outcome. Use SUCCESS when the files were processed successfully, or FAILED when processing failed. |
Marking an eventFileId as FAILED will fail the migration immediately.
The Forge migration platform treats updates to event files the same as updates to the existing APP_DATA upload process. As a result, any eventFile that is marked as SUCCESS will
trigger the sliding window logic and reset the 15-minute timeout window.
Rate this page: