Asset upload fails when using Asset Manager APIs in Adobe Experience Manager as a Cloud Service
Asset upload fails when integrations use in-JVM APIs such as com.day.cq.dam.api.AssetManager.createAsset. These APIs are deprecated and unsupported for binary uploads in Adobe Experience Manager as a Cloud Service. Uploading binaries inside the AEM JVM is treated as a cloud anti-pattern. To fix this issue, migrate to Direct Binary Upload workflow or use Bulk Import for asset ingestion.
Description description
Environment
- Adobe Experience Manager as a Cloud Service
- Adobe Developer App Builder
- AEM Dynamic Media
Issue/Symptoms
- BPA report flag unsupported.asset.api
- Usage of
com.day.cq.dam.api.AssetManager.createAssetor similar APIs - Asset upload attempts executed inside AEM JVM
- Warnings stating asset upload must not run inside Experience Manager JVM
- Developer warnings indicate that asset uploads must not run inside the Experience Manager JVM
Resolution resolution
-
Search your codebase for
com.day.cq.dam.api.AssetManager.createAsset,createOrReplaceAsset, and other asset creation methods that write binaries inside AEM. -
Verify that the BPA flag or IDE warning references these APIs, such as unsupported.asset.api
-
If you can’t locate the affected code, collect the BPA output and file paths and share them with Adobe Support.
-
Use the diagnostic branching below:
- If uploading assets from an external system, use Direct Binary Upload API (
initiateupload → binary upload → complete-upload). - If performing high-volume ingestion, use AEM Bulk Import from cloud storage (S3, Azure, GCP, Dropbox, OneDrive).
- If periodic scheduled ingestion is required, use Adobe App Builder + AEM Assets HTTP API.
- If uploading assets from an external system, use Direct Binary Upload API (
-
Confirm that your use case doesn’t require in-JVM asset uploads.
-
Generate OAuth Server-to-Server credentials in Adobe Developer Console.
-
Assign the correct Product Profile to the credentials.
-
Generate an access token and verify that Adobe Developer Console returns a valid bearer token.
-
If token generation fails, verify that the assigned Product Profile includes write permissions.
-
Log in to AEM Author and navigate to Tools
>Security>Users. -
Locate the technical account user that appears after the first API invocation.
-
Verify that the user belongs to a services user group with
jcr:readandrep:writepermissions on/content/dam. -
Check Tools
>Security>Permissions for the Services user group. -
Initiate the Direct Binary Upload workflow.
-
Upload the binary directly to the returned cloud storage location.
-
Complete the upload request to start AEM asset processing.
-
Navigate to Assets
>Files>your target folder and verify that the asset appears in the target folder. -
If the upload fails, collect the API request and response payloads and share them with Adobe Support.
-
Move the assets to a supported cloud storage provider and configure Bulk Import in AEM
-
Verify that the imported assets appear in AEM.