March 17, 2020
Estimated Post Reading Time ~

Instructions on AEM Upgrade from AEM 6.3 to AEM 6.5

AEM6.5 Upgrade

AEM Jar:

·       Run AEM6.5 main release jar
·       Install AEM 6.5.1.0 service pack on top of AEM6.5. This service pack includes performance, stability, security, and key customer fixes and enhancements released since the general availability of AEM 6.5 in April 2019.

Release Notes:  

Please refer below links to understand key features to upgrade to AEM6.5. feature-level enhancements are listed out in the below documents.

Action Items for Your Project:

·       Technical Requirements
·       List out deprecated features
·       Assessing the upgrade complexity with Patter detector
·       Finalize the upgrade procedure – in place or fresh install
·       Start fresh AEM6.5 server and install the required service pack and acs commons 4.3.2 version
·       Update pom files to make the bundle active and running
·       Fix the JUnit issues which are causing due to Uber jar update and deprecated APIs.
·       Restructure Clientlibs code
o   Move all the clientlibs under /etc/designs/your-project to /apps/your-project/clientlibs
o   Update the references in your project code
·       Restructure designs
o   Move all the design nodes under /etc/designs/your-project/jcr:content to /apps/settings/wcm/designs/ your-project/jcr:content
o   update the references in the code.
o   update the references in the content.
·       Restructure Workflows & email notifications code
·       Update filter.xml with new locations
·       Install I18n keys, acs-commons list languages node, editable templates configs, content nodes, generic list designs. Create a package from prod with below filters
§  /apps/your-project/i18n
§  /etc/acs-commons/lists
§  /etc/languages
§  /conf/your-project/settings/wcm (Editable template files would store here)
§  /etc/designs/default/jcr:content/genericlist
·       Migrate content. Create small packages with below filters
§  /content/dam/your-project
§  /content/your-project
·       Experience Fragments configuration
o   Update cq:allowedTemplates property under /content/experience-fragments node to add the value /conf/ your-project/settings/wcm/templates/experience-fragment(.*)?
·       Validate the customizations under /apps
·       User/groups migration
·       Replication agent’s setup
·       Update OSGI configurations.
·       Update AEM Dispatcher rules to allow the serving of Client Libraries via the /etc.clientlibs/ proxy servlet.
·       Post upgrade activities
·       Testing the Upgrade Procedure

Technical Requirements:

·       Java – Java11 helps to improve the system's stability, performance, and supportability. Java8 is also supported
·       Server Operating Systems – Linux
·       Virtual & Cloud Computing Environments - Microsoft Azure or Amazon Web Services (AWS)
·       Dispatcher - Dispatcher version 4.3.2 or higher
·       Webserver - Apache httpd 2.4.x [1,2]

Deprecated Features

·       Target Classic API (XML) support in AEM is deprecated. Reconfigure the integration to use the new API
·       Using mbox.js to the integration with Adobe Target in AEM is deprecated. Switch to use at.js 1.x
·       Most of the foundation components are deprecated, Note that Foundation Components remain fully supported while being deprecated. advised to use the Core Components for future projects. Existing sites can remain as is or use the AEM Modernize Tools Suite to refactor the site to use Core Components.
·       Adobe does not plan to further maintain and update the jQuery UI client library that is shipped as part of the distribution. JQuery clientlibs should be added to the codebase.
·       Adobe does not plan to further maintain and update the Handlebar client library that is shipped as part of the distribution. Handlebar clientlibs should be added to the codebase.
·       The integration with Adobe Search & Promote is deprecated – not using, need to confirm
·       The integration with DTM (Dynamic Tag Manager) is deprecated. – not using, need to confirm

Pattern Detector - 

·       Use a pattern detector to check the list of items that potentially break after upgrade on the existing instance and the customizations which will be overridden by the upgrade using the pattern detector.
·       Installed Pattern detector package in the local instance and below is the status report.
pattern-detecter-status.json
List of Items that may effects post upgrade:
 Components:
·       Components/nodes which contains richtext ( /libs/cq/gui/components/authoring/dialog/richtext)
·       We need to list out the components would effect after migration and then need to fix.
·       Nodes which are referring “/libs/cq/workflow/components/model/external_process”
o   Ex - /apps/acs-commons/components/workflow/watson-audio-transcription
·       Page components which extends /libs/wcm/foundation/components/page
o   Ex - /apps/your-project/components/pages/basepage
Core:
Service
Affected Bundles
Action Type
com.google.gson.internal
com.your-project.global.core,
Removed
javax.script
com.adobe.acs.acs-aem-commons-bundle
Removed
org.apache.jackrabbit.oak.commons
com.adobe.acs.acs-aem-commons-bundle
Changed




Workflow:
         Few workflows under ACS-Commons are incompatible after the upgrade. The attached status report contains a list of workflows

Upgrade Approaches:

·       In-place upgrade – Adobe supports in-place upgrade. Replace AEM6.3 jar with AEM6.5 jar and start the instance and update the code to support the AEM6.5 version.
·       Fresh Installs - involve setting up a new instance of the AEM6.5 version, updating the code for deployment to the AEM6.5 version, and migrating content and configuration (which may include workflows, custom OSGi configuration, etc.)
As per the existing AEM6.3 run book, it looks like we have followed a fresh install approach for the AEM6.3 upgrade. Build the new aem6.3 instance, installed required service packs and update codebase to support aem6.3 version and migrated content/users, etc.
Based on the application complexity/content size/ risks involved upgrade approach will be decided. Both approaches have their own pros & cons. Based on a few factors approach should be finalized. Please refer below link for more details.
POM Changes:
·       change the acs commons version from 3.9.0 to 4.3.2
o   Ui.apps/pom.xml
<dependency>
              <groupId>com.adobe.acs</groupId>
              <artifactId>acs-aem-commons-content</artifactId>
              <version>4.3.2</version>
              <classifier>min</classifier>
              <type>content-package</type>
</dependency>
§  Main pom.xml
<dependency>
                <groupId>com.adobe.acs</groupId>
                <artifactId>acs-aem-commons-bundle</artifactId>
                <version>4.3.2</version>
                <scope>provided</scope>
</dependency>

·       Change uber jar version to 6.5.1
o   Main pom.xml
<dependency>
                   <groupId>com.adobe.aem</groupId>
                   <artifactId>uber-jar</artifactId>
                   <version>6.5.1</version>
                   <classifier>apis</classifier>
                   <scope>provided</scope>
    </dependency>
·       Junits Fixes:
o   Main pom.xml
            <dependency>
                <groupId>io.wcm.maven</groupId>
                <artifactId>io.wcm.maven.aem-dependencies</artifactId>
                <version>6.5.1.0000</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>           
            <dependency>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>2.5</version>
                <classifier>all</classifier>
           </dependency>
Fix for net.sf & net.spf unresolved issue.
o   Core pom.xml
<Import-Package>
net.sf.*;resolution:=optional,net.spy.*;resolution:=optional,*
</Import-Package>   
Code Restructuring:
/etc/cloudsettings
/etc/blueprints
/etc/mobile
/etc/msm/rolloutconfigs
/etc/scaffolding
/etc/designs/default
/etc/workflow/notification
/etc/workflow/models
All the clientlibs under /etc/designs/your-project

Note: Make list of the custom workflows and verify the workflows are working or not after upgrade (with updated API’s)
/etc/workflow/notification/email/activation-request
Workflow restructure changes:
§  Day CQ Link Externalizer osgi configurations
§  Update workflow notification references with new location
Groovy Scripts to update all the paths:
·       Design Path changes : under /content/your-project
o   All the content references pointing to /etc/designs/your-project to /apps/settings/wcm/designs/your-project
o   cq:designPath = /apps/settings/wcm/designs/your-project
·       Content hub/personalization changes under /content/your-project:
o   All references pointing to /etc/cloudsettings/default/contexthub need to be updated to point to /conf/your-project/settings/cloudsettings/default/contexthub
o   /etc/segmentation/contexthub  to /conf/we-retail/settings/wcm/segments
o   cq:contextHubPath = /conf/your-project/settings/cloudsettings/default/contexthub
o   cq:contextHubSegmentsPath = /conf/we-retail/settings/wcm/segments
o   ex: /content/your-project/en_US/jcr:content
o   results: under /en total 2968 nodes
·       Mobile responsiveness/device groups(root node has property, check other nodes too)
o   For any AEM Sites Pages that depend on these Mobile Device Emulator Configurations, update the Page's jcr:content node:
[cq:Page]/jcr:content@cq:deviceGroups = String[ mobile/groups/responsive ]
o   Ex: /content/your-project/jcr:content
o   Testing is required on actual devices. Phone/tablet
o   /etc/mobile/groups/responsive to mobile/groups/responsive
o   Results: only one node /content/your-project/jcr:content
·       MSM rolloutcofigs
o   Update any references on AEM Pages to Multi-site Manager Rollout Configurations in the Previous Location, to point to their counterparts in the New Locations 
o   /etc/msm/rolloutConfigs to /apps/msm/wcm/rolloutconfigs
o   Ex: /content/your-project/en_US/jcr:content/cq:BlueprintSyncConfig
o   Check is there any other nodes.
o   Results: 13 nodes under /en
Replication Agents setup:
Update settings of the default publish agent with publish URI and admin creds

Dispatcher:
·       Dispatcher - Dispatcher version 4.3.2 or higher
·       Webserver - Apache httpd 2.4.x [1,2]
·       Dispatcher Changes:
o   Allow access to below paths:
/conf/*
/etc.clientlibs/*
o   Update hostname and port
Testing the Application:
Below are critical areas of any AEM implementation that should be covered by your test plan once the environment has been upgraded and the upgraded code base has been deployed.
Functional Test Area
Description
Published Sites
Testing the AEM implementation and associated code on the publish tier
through the dispatcher. Should include criteria for page updates and
cache invalidation.
Authoring
Testing the AEM implementation and associated code on the Author tier. It should include page, component authoring, and dialogs.
Integrations with Marketing Cloud Solutions
Validating integrations with products like Analytics, DTM, and Target.
Integrations with 3rd Party Systems
Any 3rd party integrations should be validated on both Author and Publish tiers.
Authentication, Security and Permissions
Any authentication mechanisms like LDAP/SAML should be validated.
Permissions and groups should be tested on both Author and Publish
tiers.
Queries
Custom indexes and queries should be tested along with query performance.
UI Customizations
Any extensions or customizations to the AEM UI in the author's environment.
Workflows
Custom and/or out of the box workflows and functionality.
Performance Testing
Load testing should be performed on both Author and Publish tiers that simulate real-world scenarios.

Risks which may involve in inplace upgrade and Java11–
·       adobe inplace upgrade process got stuck in middle with indexes issues.
·       soap services stub issues when moved from java 8 – java 11. stubs are not generating when using java11(cfx plugin). Then downloaded the stubs manually from java8 and added in the java11 project.


By aem4beginner

No comments:

Post a Comment

If you have any doubts or questions, please let us know.