Assets metadata extraction overriding dc:title, dc:description authored via Content Hub | Community
Skip to main content
Level 1
April 7, 2026
Question

Assets metadata extraction overriding dc:title, dc:description authored via Content Hub

  • April 7, 2026
  • 1 reply
  • 45 views

I am working on AEM 6.5 CS and content hub is integrated.

when we upload assets in content hub and it reached AEM’s hydrated-assets folder , it’s dc:title and dc:description value is overridden by extracted values from assets.

I want to priorities Content Hub value, is there a way I can achieve this?

1 reply

Adobe Employee
April 14, 2026

@RinkiSh So what you're seeing is expected OOTB behavior, but you can change it.

 

Goal: make Content Hub's dc:title / dc:description win

There are two practical patterns:

  1. Turn off extraction of title/description from the binary (simplest if you don't need embedded values).
  2. Let extraction run, but re‑apply the Content Hub values after extraction.


Which one to pick depends on whether you ever want to use embedded title/description.
 

Option 1 – Block XMP title/description so Content Hub values are kept
 

If you're happy to ignore embedded Title/Description and treat Content Hub (or AEM authors) as the source of truth for those fields, configure the XMP filter to block them.

This prevents dc:title / dc:description from being populated from the file's XMP at all, so the values set during Content Hub upload remain untouched.

1.1. AEM 6.5 (on‑prem / AMS)

Use OSGi config com.day.cq.dam.commons.metadata.XmpFilterBlackWhite ("Adobe CQ DAM XMP Filter"), as described in the XMP writeback docs and confirmed in internal discussions. [1] https://experienceleague.adobe.com/docs/experience-manager-65/content/assets/administer/xmp-writeback.html?lang=en

 

  1. Go to http://host:port/system/console/configMgr.

  2. Find Adobe CQ DAM Xmp Filter Blacklist / Whitelist (com.day.cq.dam.commons.metadata.XmpFilterBlackWhite).

  3. Configure it to blacklist dc:title and dc:description.
    Example (conceptual):

    • Mode: blacklist
    • Properties:
      • dc:title
      • dc:description
  4. Save, then upload a fresh asset via Content Hub and check:

    • dc:title / dc:description should remain what Content Hub set, even after processing.
    • Embedded title/description from the file should no longer overwrite them.
       

      1.2. AEM as a Cloud Service

      The same XMP filter exists in AEMaaCS; you configure it via code:

    • Add an OSGi config in your project, e.g.:

      /apps/yourproject/osgiconfig/com.day.cq.dam.commons.metadata.XmpFilterBlackWhite.cfg.json
    • Configure it to blacklist dc:title / dc:description similarly to above.

    • Deploy the config via Cloud Manager; re‑test with a newly uploaded Content Hub asset.

    • This is the cleanest solution if you never want embedded titles/descriptions to override author‑ or CH‑provided values.

       

      Option 2 – Re‑apply Content Hub values after extraction

      If you do want embedded metadata in other scenarios, but specifically want Content Hub values to win for hydrated assets, use a small post‑processing workflow / listener scoped to /content/dam/hydrated-assets.
       

      2.1. Capture the Content Hub values in "authoritative" properties

      When Content Hub uploads, the metadata you enter is already written into the AEM metadata node under jcr:content/metadata.

      To make the logic explicit and survivable across processing:

    • Define custom properties, e.g.:
      • xcm:chTitle
      • xcm:chDescription
    • Update your metadata schema for /content/dam/hydrated-assets so that:
      • The fields users see in the Content Hub upload flow map to those custom properties as well as dc:title/description (or you copy them later).
    • Result: you always have a "Content Hub authority" copy of the values.

      2.2. Workflow / listener to override extracted values

      Then add a post‑processing step that runs after DAM Update Asset / NUI processing:

    • Scope: only assets under /content/dam/hydrated-assets (or whatever folder you use for CH uploads).

    • Logic:

      if xcm:chTitle exists and not empty:
      set dc:title = xcm:chTitle

      if xcm:chDescription exists and not empty:
      set dc:description = xcm:chDescription

      save
    • AEM 6.5

      • Copy the DAM Update Asset workflow, add a custom process step at the end that does the above, and bind that workflow only to the hydrated-assets folder.
      • Or use a Workflow Launcher on jcr:content/metadata under /content/dam/hydrated-assets that runs your custom step whenever an asset completes processing.
    • AEMaaCS

      • Implement a small Workflow / Event Handler that listens for asset processing completion and updates dc:* from xcm:ch* only for hydrated-assets.
      • Deploy via your Cloud Manager code pipeline.
         
    • This pattern lets extraction and smart tags run as usual, but Content Hub's values become the last writer for title/description.

      Implementation options: