Workflow OOTB email showing localhost link for content

Avatar

Avatar

chintan97

Avatar

chintan97

chintan97

22-05-2020

I am using OOTB email for workflow (checked email option in dynamic participant step). The email contains link to localhost:4502/bin/... and I want that link to point towards dev/ qa etc environments. I assume that the link is coming from 'Day CQ Link Externalizer' local property.

Screen Shot 2020-05-22 at 1.36.15 PM.png

 

After updating local value to author URL, it works fine but after each maven build the value in local gets overwritten. I have two issues here.

1. What's the actual meaning of having local here? Will it impact anything if I update it to author URL?

2. After each build, the local value gets overwritten to http://localhost:4502. I have file named 'com.day.cq.commons.impl.ExternalizerImpl.xml' under /apps/<my site>/config.dev/ and same under config.qa etc. Even if I update the file, the changes in local field are not getting reflected in /system/console/configMgr and they are overwritten with localhost link.

 

The file content in 'com.day.cq.commons.impl.ExternalizerImpl.xml' is:

<?xml version="1.0" encoding="UTF-8"?>
jcr:primaryType="sling:OsgiConfig"
externalizer.domains="[local http://localhost:4502,author <author URL to my site>,publish <publish URL to my site>]"
externalizer.host=""
externalizer.contextpath=""/>
 
EDIT 1: I am using AEM 6.5.
workflow workflow email workflow email notification

Accepted Solutions (1)

Accepted Solutions (1)

Avatar

Avatar

sunjot16

Employee

Avatar

sunjot16

Employee

sunjot16
Employee

22-05-2020

The local should always point to the instance. The reason is that AEM needs local for other internal operations.

The following mapping names are predefined and must always be set as AEM relies on them:
  • local - the local instance
  • author - the authoring system DNS
  • publish - the public facing website DNS

A custom configuration allows you to add a new category, such as "production," "staging," or even external non-AEM systems such as "my-internal-webservice" and is useful to avoid hardcoding such URLs across different places in a project's codebase.

 

To point to author url, you should use the author entry.

 

More information about it can be found here:

https://docs.adobe.com/content/help/en/experience-manager-64/developing/platform/externalizer.html#c...

 

Hope it helps !! 🙂

Answers (1)

Answers (1)

Avatar

Avatar

Arun_Patidar

MVP

Total Posts

2.9K

Likes

1.0K

Correct Answer

831

Avatar

Arun_Patidar

MVP

Total Posts

2.9K

Likes

1.0K

Correct Answer

831
Arun_Patidar
MVP

23-05-2020

Hi,

you have to use Externalizer API for those links to convert based on osgi config.

Keep your config in the codebase.

 

com.day.cq.commons.impl.ExternalizerImpl.xml 

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
   jcr:primaryType="sling:OsgiConfig"
   externalizer.domains= "[local https://localhost:4502,author https://author-sites.com,publish https://publish-sites.com]"/>

 

 

Java Code Example :

Externalizer externalizer = resolver.adaptTo(Externalizer.class);
            if (null != externalizer && StringUtils.isNotBlank(domain)) {
                if (ModeUtil.isAuthor()) {
                    externalLink = externalizer.authorLink(resolver, externalLink);
                } else {
                    externalLink = externalizer.externalLink(resolver, domain, externalLink);
                }
            }