Campaign: a sincronização de modelos do AEM falha após alterar a localização dos modelos no AEM
Quando o Adobe Campaign tenta sincronizar um modelo de email do AEM por meio do endpoint .campaign.link.json, a operação pode falhar com um erro JST-310000 JSON.parse, mesmo que o modelo pareça existir e a sincronização básica pareça funcionar. Esse problema pode ocorrer quando um componente de página de email do AEM personalizado herda da página Componentes principais de email usando um caminho de repositório absoluto em vez do tipo de recurso relativo esperado pela resolução do servlet Sling.
Descrição description
Um cliente relatou que modelos de email mais antigos do AEM continuavam a funcionar, mas modelos mais novos baseados em um componente de página de email falhavam quando abertos ou sincronizados do Campaign.
O sintoma visível no Campaign foi um Erro JST-310000 ao compilar o script ‘nms:amcIntegration.js’ causado por JSON.parse.
O cliente estava tentando enviar uma nova página de modelos de campanha do AEM, que foi criada no componente principal de email e editável por natureza.
O tipo de recurso em uso era: /apps/aem-crm/components/email/page e o supertipo era: /apps/core/email/components/page/v1/page, recomendado pela Adobe como componentes mcm antigos serão descontinuados.
Em geral, a sincronização entre o AEM e o Campaign estava funcionando e os modelos estavam visíveis na lista de seleção, mas quando os novos modelos no componente principal de email foram selecionados, o erro apareceu.
O cliente adicionou os valores apropriados à opção AEMResourceTypeFilter no Campaign:
mcm/campaign/components/newsletter,mcm/campaign/components/campaign_newsletterpage,mcm/neolane/components/newsletter,/apps/aem-crm/templates/campaign-newsletter-template-2025,/apps/aem-crm/components/email/page,/apps/core/email/components/page/v1/page
Resolução resolution
Causa raiz
A sincronização falha porque o LinkServlet do AEM (que lida com o ponto de extremidade .campaign.link.json e retorna o JSON que o Campaign espera) não está sendo chamado para modelo problemático. Em vez disso, o manipulador POST padrão do Sling é executado e retorna uma resposta do HTML, que o Campaign não analisa (erro JSON.parse).
Isso acontece porque o componente do cliente /apps/aem-crm/components/email/page declara seu sling:resourceSuperType usando um caminho absoluto:
sling:resourceSuperType = “/apps/core/email/components/page/v1/page”
O LinkServlet é registrado para o formulário relativo core/email/components/page/v1/page (sem /apps/). O Sling as trata como chaves diferentes, de modo que não consegue encontrar o servlet ao percorrer a hierarquia de componentes.
Resolução
Na definição de componente personalizado do cliente (/apps/aem-crm/components/email/page/.content.xml na origem do projeto do AEM), altere sling:resourceSuperType do caminho absoluto para o formulário relativo:
< !— Antes —>
sling:resourceSuperType=“/apps/core/email/components/page/v1/page”
< !— Depois —>
sling:resourceSuperType=“core/email/components/page/v1/page”
Reimplante o pacote de componentes após essa alteração. O Sling percorrerá corretamente a cadeia superType e chamará o LinkServlet, retornando o JSON para o Campaign e resolvendo o erro de sincronização.