Missing jcr:mimeType prevents .vtt assets from processing correctly in Experience Manager Assets
In Experience Manager Assets, older .vtt (WebVTT) assets that are missing the jcr:mimeType property don’t process correctly in workflows that require MIME-type detection, including translation workflows. New uploads set jcr:mimeType to text/vtt when the MIME mapping is available. To fix this, identify affected assets, set the missing property to text/vtt through a controlled administrator or developer process, and verify the MIME mapping for future uploads.
Description description
Environment
Adobe Experience Manager Assets with Dynamic Media in Scene7 mode and asset translation workflows
Issue/Symptoms
.vtt(WebVTT) files in DAM are missing thejcr:mimeTypeproperty under/jcr:content/renditions/original/jcr:content.- Translation workflows fail or skip the affected assets because the file type can’t be determined.
- Reprocessing the affected assets doesn’t populate
jcr:mimeType, but deleting and reuploading the assets does. - New
.vttuploads correctly setjcr:mimeTypetotext/vtt. - Older uploads and assets ingested through bulk tools or custom integrations are missing the property.
Cause
Older .vtt assets were uploaded before the correct MIME-type mapping existed or through an ingestion method that didn’t assign the required MIME metadata. As a result, jcr:mimeType wasn’t set on the original rendition, so workflows that require MIME-type detection couldn’t process the asset. New uploads set jcr:mimeType to text/vtt after the mapping is available.
Resolution resolution
To repair affected .vtt assets and prevent future occurrences, follow these steps:
-
Identify the affected
.vttassets by querying fordam:Assetnodes under/content/damwhere the original rendition lacksjcr:mimeType. -
Run one of the following queries:
Run this JCR-SQL2 query:
code language-none SELECT [ jcr:path] FROM [ dam:Asset] AS a WHERE ISDESCENDANTNODE(a, '/content/dam') AND NAME(a) LIKE '%.vtt' AND ( a.[ jcr:content/renditions/original/jcr:content/jcr:mimeType] IS NULL OR a.[ jcr:content/renditions/original/jcr:content/jcr:mimeType] = '' )Alternatively, run this XPath query:
code language-none /jcr:root/content/dam//element(*, dam:Asset)[ jcr:like(fn:name(), '%.vtt') and not(jcr:content/renditions/original/jcr:content/@jcr:mimeType)]If ACS AEM Commons is installed, run the JCR-SQL2 query through a JCR SQL2 Query Report.
-
For each affected asset, set
jcr:mimeTypetotext/vtton/jcr:content/renditions/original/jcr:contentby using a controlled workflow, maintenance script, or deployment-appropriate AssetManager API while retaining the existing binary. -
If the translation rules require additional metadata, set
dc:formatordam:MIMEtypetotext/vttunder/jcr:content/metadata. -
Upload a test
.vttfile and verify thatjcr:mimeTypeis set totext/vtt. -
If new uploads don’t receive the MIME type, verify that the Apache Sling MIME Type Service maps
.vtttotext/vtt. -
Verify that manual, bulk, and API-based upload methods provide the correct MIME type for
.vttfiles. -
Reprocess the affected assets and verify that the translation workflow processes them successfully.