Last updated Aug 5, 2025

SQL

Starting from CCMA 3.11.17 and JCMA 1.12.43 you can use the SQL data plane to migrate data into Forge SQL after you have applied for EAP.

While supplying SqlParameters to the sendSqlData() method, you can set the property importOnForgeStorage=true. That will instruct the App Migration Platform to automatically import the data into Forge SQL for the respective app installation.

If the migrated data already exists in the SQL, it will be overwritten. This is done based on the primary key of the table.

In case you don't opt to use the Auto-import feature (importOnForgeStorage=false), your Forge app will be responsible for performing the data ingestion and subsequently acknowledge the payload with messageProcessed(transferId, messageId), just like with the unopinionated data upload.

The avi:ecosystem.migration:uploaded:sql Forge migration event is fired when the data is uploaded with optional transformers to the migration platform.

Data Transformations (upcoming)

In order to reduce the transformation effort in App Migrations, we'll soon be enabling Id Mappings and possibly other transformations as part of the migration pipeline.

Code example with no data transformers

1
2
// In your class implementing DiscoverableForgeListener
List<String> rows = new ArrayList<>();
// Your SQL data in JSON format as column to value pairs
rows.add("{\"user_id\": 1, \"name\": \"john\"}");
// Import on Forge Storage is true on the `users` table
SqlParameters parameters = new SqlParameters("users", true); 
gateway.sendSqlData(rows, parameters);

// Once you have exported all the data, you can call completeExport to enable progress reporting
gateway.completeExport();

All columns should be present in the JSON data even if the value is null.

Code considerations

You can invoke the method sendSqlData() as many times as you need, and they may or may not be used in combination with different SqlParameters. To avoid handling large in-memory objects it is best to do this regularly.

The migration platform will group the items in workable sizes (approximately 240KB each).

Once all data is exported, including the binary data uploaded via gateway.createAppData(), it is important to call gateway.completeExport() to enable progress reporting and to notify the platform that the export is complete.

Database schema

The database schema will need to be defined before the migration. Refer to Forge SQL documentation.

If data does not align with the schema e.g., missing a column it will not be imported into Forge SQL.

Limits

The maximum row size is 6MiB refer to Forge SQL limits.

Error handling and remediation

If an unexpected error occurs in the migration platform, this will result in either a FAILED or TIMED_OUT app migration status. The migration can be retried.

Handling binary and BLOB data

We recommend to encode binary and Blob data e.g., Base64 encoding, because the migration platform assumes data is in JSON format.

Have your say

We want to make the most out of the EAP and would love to hear your feedback on this feature. Please fill out this form to share your thoughts, suggestions, or any issues you encounter while using the SQL in the App Migration Platform.

Rate this page: