Purpose:
A detailed explanation of issues faced during AEM upgrade from AEM 6.1 to AEM 6.3 with workarounds and permanent solutions.
Issue #1: Problem while replicating pages with comments node
Scenario: We had a content freeze for a couple of days and migrated the entire content along with DAM from our AEM 6.1 prod instance to Fresh AEM 6.3 instance. We did the first round of testing in QA and Local DEV environments and content appeared to be fine. When we replicated the entire content and DAM it is shown that the entire DAM and content are successfully replicated. When started testing in publish environments we found there are broken links and images on publish environment. We tried replicating the pages individually thinking that few pages were not replicated. When we replicate from page/asset it shows page is successfully replicated, but still, we were not able to see the page in publish instance. When we checked for replication logs we found a null pointer exception for the pages which are not replicated after analyzing in-depth about this issue we found the issue is with “comments node under jcr:content of these pages/assets”.On a fresh AEM 6.3 instance open sites.html.
Steps to reproduce: Select any page for example /content/we-retail/ca/en/men. On the left side open timeline and post a comment. Verify if the comment is available in crx/de. Try to replicate the page. You can see the page is replicated message but actually, the page will not be replicated and you see null pointer exception in replication log and error logs as mentioned below.
26.10.2017 06:55:45.873 *ERROR* [10.44.48.201 [1509015345838] POST /bin/replicate.json HTTP/1.1] com.day.cq.replication.Agent.publish2useast1 Error while building replication content java.lang.NullPointerException
26.10.2017 06:55:45.873 *ERROR* [10.44.48.201 [1509015345838] POST /bin/replicate.json HTTP/1.1] com.day.cq.replication.impl.ReplicatorImpl Error while building replication content.
java.lang.NullPointerException: null
at java.util.Objects.requireNonNull(Objects.java:203)
at java.util.Arrays$ArrayList.<init>(Arrays.java:3813)
at java.util.Arrays.asList(Arrays.java:3800)
at com.adobe.granite.comments.internal.CommentReplicationContentFilterFactory$CommentReplica tionContentFilter.accepts(CommentReplicationContentFilterFactory.java:100)
at com.day.cq.replication.impl.ReplicationContentFilterChainImpl.accept(ReplicationContentFi lterChainImpl.java:64)
at com.day.cq.replication.impl.content.durbo.DurboContentBuilder.write(DurboContentBuilder.j ava:492)
Solution: It is identified that after posting the comment, it is stored under the same page in a node with sling:resourceType -granite/comments/components/comment which does not exist in 6.3.
Workaround: Go to http://host:port/system/console/components. Look for com.adobe.granite.comments.internal.CommentReplicationContentFilterFactory
· Click on Stop.
This would stop the replication process to look for any comments to be replicated and stopping this should resolve the issue.
Permanent fix: This issue has been fixed in AEM 6.3 SP1 CFP1 which was released in November.
Issue #2: RequestParameterMap is throwing an error in AEM 6.3 CFP1
In AEM 6.3 request.requestParameterMap[value] is throwing an error after upgrading to CFP1 .
Scenario: We are using request.requestParameterMap to get the query parameters from the URL. Its working fine in AEM 6.1 and AEM 6.3 SP1 and the functionality is broken in AEM 6.3 SP1 CFP1.
Steps to reproduce:
· Go to this page (http://localhost:port/editor.html/content/we-retail/us/en/men.html) and observe there is a product grid component after the title component.
· Go to CRXde and navigate to this path (/apps/weretail/components/content/productgrid/productgrid.html)
· In “productgrid.html” add this line <sly data-sly-test= “${request.requestParameterMap[‘tag’][0].string}”></sly> after 15th line in product grid.html
· Refresh the above page, then you will see the component will be missing from that page and if you inspect on that div you can see the error.
Solution: This issue is resolved in AEM 6.3 CFP2 which might be released late in March or April. There is no workaround for this issue other than validating the query string in JS.
Issue #3: Broken images on pages issue
Scenario: After migration from 6.1 to 6.3 SP1 CFP1, we found the images authored in the text-image component show broken even though we have images authored. It occurs for all the text-image components.
However, when we open the dialog we can see the image in the dialog and also under page content we see image path and also the image is available in the DAM.
Solution:
Permanent fix: The root cause of this issue is bugs in Image.js(/libs/wcm/foundation/components/utils/Image.js).This issue is resolved in AEM6.3SP2 which might be released at the end of March.
Workaround: Image.js has to be overlayed with its newer version in place. Replace line 74 with “return that.properties[CONST.PROP_FILE_REFERENCE] || that.properties.get(CONST.PROP_FILE_REFERENCE);”
Issue#4: Page unlock issue
Scenario: In AEM 6.3 We tried to lock a few pages and when we try to unlock them we are unable to unlock the page. It shows error in the developer console.
Steps to reproduce:
· Login as admin.
· Navigate to any page and open it in edit mode.
· Lock the page. We see the info saying the page is locked.
· Now try to unlock the page. Nothing happens.
· Open developers console and we see an error saying “core.e020d16606e008e67da32a704e863736.js:32697 Uncaught TypeError: Cannot read property ‘shared’ of undefined”.
Solution:
Root cause: The Editor client library assumes the presence of the CQ.shared namespace (and all its underlying objects, like CQ.shared.User, used in [1]) in the content page. That doesn’t break with sample websites since for instance because those are including the cq.shared client library. But custom content pages could break.
Workaround: Include the cq.shared client library in your content page. There is no permanent fix as of now.
Issue#5: RTE component extra plugins don’t load when we open the component for the second time.
In AEM 6.3 SP1 CFP1, we have an issue with the rich text plugins.
When we open the component for the first time using inline mode we can see the plugins like below:
When we open the component for the first time using inline mode we can see the plugins like below:
And when we open the same component again using inline mode we noticed that some plugins are not loading like below:
Solution: This issue will be resolved in 6.3SP2-CFP1 which will be released in May.
Workaround– We need to refresh the page again then the plugins will load fine which is not the best workaround.
Issue #6: Cannot add an image to dialogs/page properties
For Touch Dialog: In AEM 6.1 we were using sling:resourceType as granite/ui/components/foundation/form/fileupload for uploading image file. When we migrated to 6.3 we were not able to drag the image from Assets.
Solution:
This issue was resolved after updating the sling:resourceType as “cq/gui/components/authoring/dialog/fileupload”.
Solution:
This issue was resolved after updating the sling:resourceType as “cq/gui/components/authoring/dialog/fileupload”.
For page properties: In AEM 6.1 we had content finder to drag and drop assets to page properties dialog. Whereas in AEM 6.3 the page properties are opened on a separate page where there is no content finder to add assets.
Solution: The solution for these issues is to replace file upload with path browser to select assets in page properties and adding content finder for page properties is considered as future enhancements for the next version of AEM.
Issue #7: Cannot save dropdown values in touch UI dialog
In AEM 6.1 for options in the dropdown widget, we can give some value for text and we can leave the value as empty when we select this option in the dialog and we will be able to save the values even though if we put it as a required field.
But in 6.3 we were not able to save the dialog if it is a required property.
Solution:
We found two ways to resolve this :
1. Give some value to that option. Even space will solve the issue
2. Remove the required property for the dropdown widget
Solution:
We found two ways to resolve this :
1. Give some value to that option. Even space will solve the issue
2. Remove the required property for the dropdown widget
No comments:
Post a Comment
If you have any doubts or questions, please let us know.