Here are some frequently asked questions about the GatherContent AEM integration. If you have any other questions please get in touch.

Who should setup the integration?

We'd advise that the integration is setup by a technical AEM user, working closely with the people who setup the Templates in GatherContent.

How long does the import take?

This all depends on the number of Items you’ve selected for import. The number and size of attachments will also impact the import time.

Can I map a GatherContent Template to multiple AEM templates?

You certainly can. Please review our support article on how to setup your mappings.

What happens to my GatherContent Item hierarchy in AEM?

All imported Items will be created in a hierarchical structure under the selected parent node (so the GatherContent Item hierarchy will be replicated). The Content editor is free to rearrange all Items and the new structure will be kept during further updates.

How are assets attached to GatherContent Item stored in AEM?

All assets stored in DAM, each of them has following generated path in AEM:

<dam_path>/<item_id>/<asset_id>/<asset_name>

where
<dam_path> - path to dam, may be configured in mapping for each import;
<item_id> - item id as folder name, that has item name as title;
<asset_id> - asset id as folder name, that has asset name as title;
<asset_name> - real asset name.

How many times do I need to install the module?

The module needs to be installed once per environment on author AEM instance.

Can I map multiple GatherContent fields to a single field in AEM?

The plugin supports many-to-one field mappings for text and guideline field types. It means, that it is possible to map, for example, two GatherContent fields into one AEM field. The content of such fields will be concatenated and placed in the AEM field. Please check the mappings table in our help documentation that shows all the supported field mappings.

How do the integrations work with the AEM workflow?

Every time the content is imported to AEM, new nodes are created or updated, which trigger appropriate workflows (e.g. create renditions for uploaded images in DAM).

Does the integration support custom components?

Integration is not limited to components, so content can be migrated to any component, that is allowed by mapping properties. Please check the mappings table. However content may be copied only as it is, without any transformation. We intend to add plugin system to support data transformation and custom mapping rules for properties.

Does the integration work with AEM tags?

At this stage the Integration does not interact with AEM tags. However existing tag id may be migrated as generic content. Such migration won't create AEM tags.

NOTE: AEM Tags support is planned for future releases and is to be implemented via a plugin system.

Does the integration work with AEM publish?

The Integration may be installed on any AEM instance, but we suggest using it on author instance only.

How to get imported content on AEM to publish instance?

Imported content will not be published automatically. It is available for the editor to review first and it can be published like any other content in AEM. For example via siteadmin or activation tree.

What happens if the Import/Update progress page has been closed during content import/update from GatherContent to AEM?

The Import/Update page should remain open to track the progress and see the results. If the page was closed for some reason, the process will continue in background. Make sure data was migrated or updated prior working with the same project.

Why rapid growth of the repository and/or significant CPU consumption may occur and how to avoid it?

Content import from GC to AEM consists of three simultaneous actions:

  1. Pages creation.
  2. Pages properties filling in.
  3. Media assets import into DAM.

The session save action occurs for each new page, page properties and for each asset. If you perform an import of a large number of rich media pages (more than 500), you may discover two issues:

  1. Significant CPU consumption.
  2. Rapid growth of the repository.

These two issues have a single reason, after every new asset written into DAM, Update Asset Workflow begins creation of multiple renditions for images, and thumbnails for PDF files.

To avoid issue with CPU consumption you can:

  1. Limit count of 'Maximum Parallel Jobs' in 'Granite Workflow Queue' configuration. You can find this config in system configuration '/system/console/configMgr'. This is the best option.
  2. Exclude your GC import path from Workflow Launchers: Node Created, Node modified. For example '/content/dam(?!/gathercontent).*'. In this case, you will not get multiple renditions for images, and thumbnails for PDF files, therefore it is not the best way.

Quick storage growth is due to tarMK works in 'append only' mode. You can produce repository compaction, please follow the Adobe guides:

  1. Online repository compaction (AEM 6.2 and above), manual: https://docs.adobe.com/docs/en/aem/6-2/deploy/platform/storage-elements-in-aem-6.html#Performing Online Revision Cleanup. Also you can configure 'Cleanup Strategy', 'Reference expiry time', 'Pause Compaction' in 'Apache Jackrabbit Oak Segment NodeStore Service' in system configuration '/system/console/configMgr' for efficiency.
  2. Offline repository compaction, manual (AEM 6.0, 6.1, 6.2 and above): https://docs.adobe.com/docs/en/aem/6-2/deploy/platform/storage-elements-in-aem-6.html#Performing Offline Revision Cleanup.

How to control import/update process speed?

Integration plugin speeds up import and update processes using parallel requests and parallel handler threads. The default is 20 threads, maximum 200 threads. If you need to speed up the import or update process, you can increase count of worker threads in the system configuration: go to the system configuration '/system/console/configMgr', find 'GatherContent: Fixed threads count pool provider' configuration and increase 'Property count of pool threads' value. Please keep in mind that during GatherContent peak loads, you can get failure responses from GatherContent API.

Did this answer your question?