CSV Asset Importer
Available since version 0.0.22
Getting Started
Install the ACS AEM Tools package via the AEM Package Manager and then open CSV Asset Importer from the AEM Tools console, or directly at /etc/acs-tools/csv-asset-importer.html
To get to the AEM Tools console from the Touch UI, select Tools > ACS AEM Tools > CSV Asset Importer.
Overview
CSV Asset Importer is a tool that accepts a CSV file whose rows represent an Asset to import.
Important Considerations
Before importing…
- http://localhost:4502/system/console/configMgr > Day CQ Tagging Service by default removes references to non-existing Tags from the
cq:tagsproperty. Ensure this is properly configured before importing. - When using AEM6/Oak and specifying the
Asset Uniqueness Column Nameensure that you have a Oak Index for this property else long traversal queries may execute. - When importing Assets OOTB Launchers will kick off many Asset related workflows. Ensure all the appropriate launchers are enabled/disabled and that your system is tuned to handle the volume of Workflows that will be invoked.
- If needed leverage the
Batch SizeandThrottle in MSto provide pauses in ingestion to allow AEM to catch up.
- If needed leverage the
- Setup a INFO (or DEBUG) Sling Logger for
com.adobe.acs.tools.csv_asset_importerto monitor import progress at http://localhost:4502/system/console/slinglog
How to Use
CSV Asset Importer has 2 import strategies:
Full

When selecting Full import strategy, the CSV Asset Importer will complete remove any matching existing assets (via the optional Asset Uniqueness Column or mandatory absTargetPath).
Delta

When selecting Delta import strategy, the CSV Asset Importer will attempt to update (and/or re-adjust) any existing asset before creating a net net asset. For example, if an existing asset is found w/ a Asset Uniqueness Column name value, it will attempt to move the existing asset to the absTargetPath and update the metadata rather than deleting the existing Asset with the matching Asset Uniqueness Column name and re-creating it from scratch.
Update Binary Yes/No
When selecting the Delta import strategy you can select to only update Metadata by setting Update Binary to No. This prevent the original rendition from being touched. From v2.6.0/3.2.0+, the relSrcPath is not required for this import style, allowing for a wholly Update Properties import method.
Once an import strategy is selected, an import CSV file must be created:

Unless you are doing a Delta import without Binary updates, ensure that the files to import are available from the AEM instance executing the import are <Absolute File Dump Location>/<relSrcPath>. The AEM process must have read access to these files.
Execute the importer; Please see the Important Considerations section above! This may take some time to process. An INFO logger can be setup for com.adobe.acs.tools.csv_asset_importer to monitor progress.

When the import is complete, review the Logs for errors. Wait for any Workflow to full complete, then verify the results.
- It is often best to ensure any Workflow triggered by asset import- usually DAM Asset Update or Metadata WriteBack is either marked as Transient (6.1+) or disabled, and DAM Asset Update Workflow is processed in a controlled manner later (ex. via ACS Commons Bulk Workflow Manager).



Column Definition Row
The first row which defined the Columns in the CSV. Each Column corresponds to a property on the Asset’s metadata node which to write the corresponding values.
Column definitions are in the format:
propertyNamethe property will be persisted as a single value StringpropertyName {{ Type }}the property will be persisted as a single value of type Type- Valid Types are:
StringLong`IntorIntegercan also be used, but are persisted asLongin JCR
DoubleBoolean- Values can be
TRUEorFALSE
- Values can be
Date- This expects the ISO Date format
Calendarcan also be used, but is persisted asDatein JCR
- Valid Types are:
propertyName {{ Type : multi }}the property will be persisted as multi-value of type Type in the JCR
Note that there are 2 required Column definitions
absTargetPaththis is the absolute path in the JCR where the Asset will be imported torelSrcPaththis is the relative (from a provided root path) path to the file to ingest for the asset. This file must be available from the AEM instance executing the importer.- Since v0.0.28 this column is optional to allow for Property Update executions.
Multi-values
If a row is marked as multi via propertyName {{ Type : multi }}, multi-values are delimited by default via |. The multi-value delimiter is configurable via the Web UI.
-
Since v0.0.28 CSV Asset Importer supports changing property types from Single to Multi (and vice versa). Note that the data in the CSV will replace any existing data at the defined property (This is not a Patch operation)
-
Since v0.0.28 CSV Asset Importer handles changing existing Multi properties to single value, and vice-versa. Any prior values will be removed (this is not a Patch operation, rather a remove and add).
Empty Values
If a column has an empty value, that property will be not exist on the Asset’s metadata node. Existing values at the property will be removed.
Asset Definition Rows
Rows 2..N each represent an Asset to import.
event-user-data (Since v0.0.30)
event-user-data of acs-aem-tools.csv-asset-importer is set for modifications invoked by this feature.
For example, in the AEM launcher exclude list, event-user-data:acs-aem-tools.csv-asset-importer can be added to ignore events that result from the CSV Asset Importer tool.
Credits: Thanks to Elise H. for helping define and refine the scope and behavior of this tool.