Campaign: Synchronisierung von AEM-Vorlagen schlägt nach Änderung des Speicherorts von Vorlagen in AEM fehl
Wenn Adobe Campaign versucht, eine AEM-E-Mail-Vorlage über den Endpunkt .campaign.link.json zu synchronisieren, kann der Vorgang mit einem JST-310000 JSON.parse-Fehler fehlschlagen, obwohl die Vorlage vorhanden zu sein scheint und die grundlegende Synchronisierung zu funktionieren scheint. Dieses Problem kann auftreten, wenn eine benutzerdefinierte AEM-E-Mail-Seitenkomponente von der E-Mail-Kernkomponentenseite unter Verwendung eines absoluten Repository-Pfads anstelle des relativen Ressourcentyps erbt, der von der Sling-Servlet-Auflösung erwartet wird.
Beschreibung description
Ein Kunde meldete, dass ältere AEM-E-Mail-Vorlagen weiterhin funktionieren, aber neuere Vorlagen, die auf einer E-Mail-Seitenkomponente basieren, schlugen beim Öffnen oder Synchronisieren mit Campaign fehl.
Das sichtbare Symptom in Campaign war ein .JST-310000 Fehler beim Kompilieren des Skripts ":amcIntegration.js“ verursacht durch JSON.parse.
Der Kunde versuchte, neue Kampagnenvorlagenseiten aus AEM zu pushen, die auf der E-Mail-Kernkomponente basieren und in der Natur bearbeitbar sind.
Der verwendete Ressourcentyp war: /apps/aem-crm/components/email/page und superType war: /apps/core/email/components/page/v1/page, was von Adobe empfohlen wird, da alte MCM-Komponenten bald nicht mehr unterstützt werden.
Insgesamt funktionierte die Synchronisierung zwischen AEM und Campaign, und die Vorlagen waren in der Auswahlliste sichtbar, aber als die neuen Vorlagen für die E-Mail-Kernkomponente ausgewählt wurden, trat der Fehler auf.
Der Kunde hat der Option AEMResourceTypeFilter in Campaign entsprechende Werte hinzugefügt:
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
Lösung resolution
Ursache
Die Synchronisierung schlägt fehl, weil das LinkServlet von AEM (das den Endpunkt .campaign.link.json verarbeitet und die von Campaign erwartete JSON zurückgibt) für eine problematische Vorlage nicht aufgerufen wird. Stattdessen wird der standardmäßige POST-Handler von Sling ausgeführt und gibt eine HTML-Antwort zurück, die Campaign dann nicht parsen kann (JSON.parse-Fehler).
Dies geschieht, weil die Komponente /apps/aem-crm/components/email/page des Kunden ihr Sling deklariert, :resourceSuperType einen absoluten Pfad verwendet:
sling:resourceSuperType = "/apps/core/email/components/page/v1/page“
Das LinkServlet wird für das relative Formular „core/email/components/page/v1/page“ (ohne /apps/) registriert. Sling behandelt diese als unterschiedliche Schlüssel, sodass es das Servlet nicht finden kann, indem es die Komponentenhierarchie durchläuft.
Lösung
Ändern Sie in der benutzerdefinierten Komponentendefinition des Kunden (/apps/aem-crm/components/email/page/.content.xml in der zugehörigen AEM-Projektquelle) Sling:resourceSuperType vom absoluten Pfad in das relative Formular:
< !— vor —>
sling:resourceSuperType="/apps/core/email/components/page/v1/page“
< !— nach —>
sling:resourceSuperType=„core/email/components/page/v1/page“
Stellen Sie das Komponentenpaket nach dieser Änderung erneut bereit. Sling führt dann die SuperType-Kette korrekt durch und ruft das LinkServlet auf, gibt JSON an Campaign zurück und behebt den Synchronisierungsfehler.