Expand my Community achievements bar.

Guidelines for the Responsible Use of Generative AI in the Experience Cloud Community.

[Campaign <-> AEM 6.2 Integration] Failed to fetch content from AEM during delivery creation.

Avatar

Level 4

We are unable to fetch content from AEM from campaign. Please find the below case information. I raised a ticket with Neolane, but there is no response.

If someone who has encountered, please provide some information on how to resolve this.

Environment Information:

AEM version : 6.2

Adobe Campaign version : 6.1

Adobe campaign Hybrid Model

Adobe campaign Mid sourcing deployment model

Adobe campaign on premise marketing wfserver build number: 8861

Adobe campaign client console build number: 8861

CASE:

I created a campaign in AEM 6.2 and then tried to fetch the content created for the campaign in Campaign client console, but this ended in error:

I followd the steps mentioned in the following documentation.

Integrating with Adobe Campaign 6.1

During delivery creation, upon clicking the "Synchronise" button, I get the following error as shown in the screen shot.

Server LOG:

14:41:45 >>> INT-150012 The HTTP query returned a 'Service Unavailable' type error (503) (iRc=-53)

14:41:45 >>> JST-310000 Error while compiling script 'nms:amcIntegration.js' line 1665: JSON.parse.

SCREEN SHOT:

campaign_aem_connection_failure.JPG

16 Replies

Avatar

Administrator

/content/campaignsTry Following:

1. Check the AEM "campaign-remote" user permissions

2. Make sure the AEM connection-url configured in the External Accounts is reachable from the machine.

    A switch from localhost to an IP-address solved this issue.

     Source:- Troubleshooting your Adobe Campaign Integration

3. Check the existence of path /content/campaigns

4. Make sure No firewall blocking access between AEM and ACS.

~kautuk



Kautuk Sahni

Avatar

Level 4

Please see my reply in bold

1. Check the AEM "campaign-remote" user permissions

- I have reset the password for campaign-remote, and this user has all permissions to the campaigns folder

But in campaign I am using "campaign-api" with the same password as "campaign-remote"

[Please refer to image]

2. Make sure the AEM connection-url configured in the External Accounts is reachable from the machine.

   A switch from localhost to an IP-address solved this issue.

     Source:- Troubleshooting your Adobe Campaign Integration

     - I am using http://<IP_ADDRESS>:4502

     [Please refer to image]

3. Check the existence of path /content/campaigns

- By deafult with a fresh AEM author, when I hit /content/campaigns return a HTTP 500

but other campaign URLs are accesible eg. /content/campaigns/geometrixx.html

From my understanding, the path does exists.

Please let me know how to test this out from Campaign, if campaign tries to access just "/content/campaigns" then this will for

sure end in error, but on the other hand "/mcmadmin#/content/campaigns" this path is accesssible

4. Make sure No firewall blocking access between AEM and ACS.

- There is no firewall blocking, as I can ping and receive response from AEM author and publisher from Campaign server

aem_external_account.JPG

Avatar

Level 4

Hi KautukSahni,

Please let me know whether the below serverconf.xml  is correct to allow access to my AEM author server

<urlPermission action="" debugTrace="false">

<url dnsSuffix="10.70.213.92" urlRegEx="http://10.70.213.92:4502/.*"/>

</urlPermission>

I think there is some problem with this config.

Avatar

Level 4

Hi kautuksahni​,

As per the below post, Is campaign-api mandatory? By default I only find campaign-remote user ?

Should I create campaign-api user with the same set of permissions as campaign-remote user ?

AEM email content synchronization issues

Regards,

Mano

Avatar

Administrator

FYI...

1. The campaign-remote user (default) needs to match the external account on Adobe Campaign. That is, the campaign-remote user's name and password must match the one you set in Experience Manager.

2. If you are creating some new user in AEM, then make sure to give same rights as campaign-remote user and set its password. Username and password should be same as the external account on adobe-campaign.

3. You can use campaign-remote user as well (no need to create any new one) but make sure that the password of this user is set in AEM (As by default, it is not set)

4. For testing use, you can use admin user and password.



Kautuk Sahni

Avatar

Level 4

I have already tried and tested with admin and campaign-remote, nothing works. I am able to publish the content from AEM to Campaign via the "Publish to Campaign" workflow in AEM. But i am unable to pull (synchronize button) the content from AEM inside campaign.

And Adobe documentation talks about campaign-api which should be changed to campaign remote, or it is badly written just like any other adobe document.

Integrating with Adobe Campaign 6.1

campaign_012.JPG

Avatar

Administrator

Thanks for pointing out the issue with the documentation. I would inform documentation team about it.

For your issue, I would say, try from the beginning (use fresh AEM instance):

1. Install AEM Integration package in campaign [By default, no security zone is configured for this operator. To connect to Adobe Campaign via AEM, you must select one. In the serverConf.xml file, the allowUserPassword attribute of the selected security zone must be set to true to authorize AEM to connect Adobe Campaign via login/password.]

2. Configuring an AEM external account

     a. Use IP over localhost

     b. do not put / in end of the url

     c. Test with admin user or campaign-remote (set the password in AEM first) or use new user having rights same as campaign-remote.

     d. Make sure that the Enabled checkbox is selected

3. Verifying the AEMResourceTypeFilter option

4. In AEM set connection with campaign with Campaign cloud configuration.

     a. You need to configure two OSGI configuration settings to the reference the Publish server:

          AEM Campaign Integration - Configuration: Go the OSGi configuration view at http://localhost:4502/system/console/configMgr->           search for AEM Campaign Integration - Configuration -> Edit the Public URL field to reference your published server (not           localhost).

          //This step is also necessary to replicate certain authoring instance configurations into the publishing instance

          Day CQ Link externalizer: Go to http://localhost:4502/system/console/configMgr-> Search for Day CQ Link externalizer -> Edit the           Public URL field to reference your published server (not localhost).

          // The Externalizer is an OSGi service that lets you transform a resource path into an external and absolute URL. This service           provides a central place to configure those external URLs and build them.

          Note:-  For the Adobe Campaign integration, make sure you configure the publish server

                       Use IP

5. Turn off Antivirus for this test run

If problem still persist then in that case reachout to the support. And do share the solution here for the community.



Kautuk Sahni

Avatar

Level 4

Hi kautuksahni​,

I have already tried and tested those steps numerous times.

I enabled debug log and got the below.

17:02:12 >>  JST-310030 URL 'http://10.70.213.92:4502/api/content/sites/campaigns.json?query=SELECT%20*%20FROM%20page%20

WHERE%20%5Bchild%5D.%5Bcq%3AacLinks%5D%20IS%20NULL%20ORDER%20BY%20%5Bcq%3AlastModified%5D%20DESC&limit=100&filter.rt=mcm

%2Fcampaign%2Fcomponents%2Fnewsletter&showAllProperties=true' tested with '10.70.213.92' domain and '.*' regexp: regexp

**OK**.

17:02:13 >>> INT-150012 The HTTP query returned a 'Service Unavailable' type error (503) (iRc=-53)

17:02:13 >>> JST-310000 Error while compiling script 'nms:amcIntegration.js' line 1665: JSON.parse.

But I am able to access this URL from campaign server environment and get back the JSON response.

http://10.70.213.92:4502/api/content/sites/campaigns.json?query=SELECT%20*%20FROM%20page%20

WHERE%20%5Bchild%5D.%5Bcq%3AacLinks%5D%20IS%20NULL%20ORDER%20BY%20%5Bcq%3AlastModified%5D%20DESC&limit=100&filter.rt=mcm

%2Fcampaign%2Fcomponents%2Fnewsletter&showAllProperties=true

Regards,

Mano

Avatar

Level 4

And this is the JSON response I received when I fetched from the Campaign server environment:

{

  • links:

    [

    ],
  • class: [
    • "core/searchresults"
    ],
  • properties:

    {

    • cq:allowedTemplates: [
      • "/libs/cq/personalization/templates/.*",
      • "/libs/mcm/templates/brand",
      • "/apps/.*/templates/newsletter.*",
      • ".*/designimporter/templates/.*",
      • "/libs/commerce/templates/promotion",
      • "/libs/commerce/templates/voucher",
      • "/apps/.*/templates/.*newsletter.*",
      • "/libs/mcm/campaign/templates/ac-email.*"
      ],
    • dc:title: "Campaigns",
    • name: "campaigns",
    • srn:paging: {
      • total: 0,
      • offset: 0,
      • limit: 100
      }
    }

}

Avatar

Level 10

Hi Mano,

Another possibility would be to check the following:

1348307_pastedImage_1.png

  • The issue you encounter is known and has been resolved in some cases after correcting the URL of the external account in Campaign.
  • Check the security changes made to Campaign build 8861 (second item in the release notes: Adobe Campaign Release Notes ). I'm not sure but it could be worth checking that this is not impacted by "We have limited the default list of URLs that can be called by JavaScript codes (workflows, etc.). To allow a new URL, the administrator needs to reference it in the serverConf.xml file."

By reading your previous comments, please note that pushing content from AEM to Campaign uses different resources than pulling AEM content from Campaign. So it's not impossible that one way works while the other does not. You are in the latter case, which suggests a configuration issue in AEM, or an error in the external account in Campaign (which seems correct from what I can see in your screenshot).

Let me know,

Florent

Avatar

Level 4

Hi Florent,

I had already configured the replication agent with the publisher IP address as mentioned in the doc, and the replication works well.

I do not see the AEM access logs moving, when the "Synchronize" button is pressed in campaign delivery.

campaign_aem_connection_failure.JPG

But when I hit the URL from the browser, I see the AEM access logs moving and below are the lines priented in logs.

AEM access.log when the URL is accessed from browser within the Campaign server environment:

URL:

http://10.70.213.92:4502/api/content/sites/campaigns.json?query=SELECT%20*%20FROM%20page%20

WHERE%20%5Bchild%5D.%5Bcq%3AacLinks%5D%20IS%20NULL%20ORDER%20BY%20%5Bcq%3AlastModified%5D%20DESC&limit=100&filter.rt=mcm

%2Fcampaign%2Fcomponents%2Fnewsletter&showAllProperties=true

AEM access.log:

127.0.0.1 - - 15/Nov/2017:09:40:50 +0800 "PUT /libs/sling/topology/connector.f8fffa6c-6583-41f7-b284-537fbb3016ba.json HTTP/1.1" 200 164 "-" "Apache-HttpClient/4.3.4 (java 1.5)"

10.70.213.92 - admin 15/Nov/2017:09:40:55 +0800 "GET /api/content/sites/campaigns.json?query=SELECT%20*%20FROM%20page%20WHERE%20%5Bchild%5D.%5Bcq%3AacLinks%5D%20IS%20NULL%20ORDER%20BY%20%5Bcq%3AlastModified%5D%20DESC&limit=100&filter.rt=mcm%2Fcampaign%2Fcomponents%2Fnewsletter&showAllProperties=true HTTP/1.1" 200 732 "http://10.70.213.92:4502/libs/granite/core/content/login.html?resource=%2Fapi%2Fcontent%2Fsites%2Fca..." "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"

10.70.213.92 - admin 15/Nov/2017:09:40:55 +0800 "GET /favicon.ico HTTP/1.1" 500 75607 "http://10.70.213.92:4502/api/content/sites/campaigns.json?query=SELECT%20*%20FROM%20page%20WHERE%20%..." "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"

I believe that the request not getting out of Campaign App Server and it is being blocked within campaign.

Is there a way to debug JS function "nms_delivery_aemListContent" in nms:amcIntegration.js, because I am interested in debugging the below lines, as I want to see the Authentication credentials used.

Line numbers 1651,1652, 1653

// Creating the request

var request = new HttpClientRequest(url);

// Adding authentication

aemAddBasicAuthentication(cmsAccount, request);

Looks like cloud front is unable to reach the release notes page.

campaign_013.JPG

Regards,

Mano

Avatar

Administrator

Hi

I think the solution is to install AEM and Campaign on the same VM and TRY it.

I saw an internal thread also having similar issue. Let me try to reachout those folks to help you here. But meanwhile try above and create a support ticket.

~kautuk



Kautuk Sahni

Avatar

Level 4

Hi kautuksahni​,

I cannot have AEM and campaign within the same VM, as per my organisation's architecture. I had already raised the ticket with support team last week, but they do not have an answer.

Moreover my AEM server is in Linux and I had a lot of dependency issues with the rpm for build 8861, so we finally gave up and moved to windows server and we made progress with the setup.

The AEM campaign json URL as mentioned in my previous post is accessible from a browser within the campaign windows server. I am able to ping my AEM server IP address as well.

Avatar

Level 1

Were you every able to solve this issue?  I have the same issue in that when I try to synchronize the newsletter into Campaign then I get an error that says JST-310000 Error while compiling script 'nms:amcIntegration.js' line 1850: JSON.parse.

Avatar

Administrator

I got his fix by installing AEM and Campaign on the same VM and TRY it.

If this doesn't work please create Support ticket and do share the solution with the community.

-Kautuk



Kautuk Sahni

Avatar

Level 4

I am using AEM 6.4 author and publish on local instance and Adobe campaign classic on a sandbox provisioned by Adobe.

While creating a delivery of type "Email delivery with AEM content", i am trying to synchronize email template from AEM to Campaign and getting following error:

An error occurred while loading the list.

SOP-330011 Error while executing the method 'aemListContent' of service 'nms:delivery'.

JST-310026 The URL

'http://127.0.0.1:4502/api/content/sites/campaigns.json?query=SELECT%20*%20FROM%20page%20WH ERE%20%5Bchild%5D.%5Bcq%3AacLinks%5D%20IS%20NULL%20ORDER%20BY%20%5Bcq%3AlastModified%5D%20 DESC&limit=100&filter.rt=mcm%2Fcampaign%2Fcomponents%2Fnewsletter%2Cmcm%2Fcampaign%2Fcompo nents%2Fcampaign_newsletterpage%2Cmcm%2Fneolane%2Fcomponents%2Fnewsletter&showAllPropertie s=true'

that the script is trying to access is not part of the authorized addresses in urlPermission (serverconf.xml)