Skip to main content

AEM 5.6 to 6.1 Upgrade

AEM upgrade - CQ 5.6.1 to AEM 6


Prerequisites
        You must have new AEM 6.X installation jar
        Create a production Server Replica with similar content and configurations to existing CQ 5.6.1 environment so that you can test the upgrade changes.
        Create a seperate new Code branch for 6.X code.
        Make performance testing scripts ready .


Steps to Upgrade
1.      Repository Upgrade
AEM 6.1 doesn't support crx2 and requires content migration to Oak repository.
There are several ways to do it
Package deployment. – If repository volume is not too high (up to 30 GBs), package deployment is the most easy and simple way to migrate content.
Use crx2oak tool - Use this if content volume is high. Will cover steps for this tool in another post. For this post I'll assume that repository migration is done using packages.

2.      Cleanup before starting the upgrade
        Backup and delete workflow launchers and sling Jobs - This will prevent workflows and jobs from getting triggered during the upgrade process. Deploy the backup package after the
        Remove version history - This will reduce the number of nodes that needs to be processed during the upgrade.
        Data Store garbage collection- It will reduce the disk space.
Clean up any other unused data from repository.
        Disable custom login modules
 
3.      Java Upgrade
Upgrade to JAVA8 for optimized performance with AEM 6.X

4.      Hot fixes
Find the exhaustive list of hotfixes at below links, and install required the hotfixes.
 
5.      Code base changes
Remove deprecated APIs
Check your code base and see if you are using any APIs listed in above links and replace them with their alternative APIs.
Resource resolver API changes – Using admin resolver is deprecated in AEM 6 and we should use Service Resource Resolver API in 6.X to get the session. Below is the link which talks about getting service resource resolver in AEM 6-
 
6.      Indexing
AEM 6 doesn't automatically index the whole content like old versions.
Logs needs to be reviewed for indexing warnings.
Use AEM explain query tool to analyze queries you are using in code base.

 

Comments

Popular posts from this blog

AEM 6.3 - Check if page is published or not

If you want to know if the page is published or not you can use the below utility method to know if the page is published or not. Steps - Take Resource Object. Adapt it to Page Adapt page to ReplicationStatus, you will get the status Here is the code - public static Boolean isPublished(Resource resource) { Boolean activated; ReplicationStatus status = null; activated = false; if (resource != null) { try { Page page = resource.adaptTo( Page.class ); status = page.adaptTo( ReplicationStatus.class ); } catch (Exception e) { LOG.debug(e.getMessage (), e); } if (status != null) { activated = status.isActivated(); } } return activated; }

Forecasting EB-2/EB-3 Green Card Filing Dates - Machine Learning Model

In this blog post, we'll explore the process of forecasting Green Card filing dates using a simple linear regression model in Python. By analyzing historical data from the United States Citizenship and Immigration Services (USCIS), we can use basic machine learning techniques to predict future filing dates. I will walk you through the process step-by-step. Gathering Data:    To begin our journey, we need to gather relevant data. You can collect data from USCIS or other trustworthy sources. This dataset should include essential information such as the visa category, country of chargeability, and the final action date for each month. For this use case, I collected data manually from USCIS visa bulletin for India EB-2 and EB-3 categories. Data looks like this - Visa bulletin - Building the Linear Regression Model:    Using Python libraries like scikit-learn, we can construct our linear regression model. This simple yet powerful algorithm will help us forecast Green Card...

CQ Page Properties from Javascript

To get CQ page properties inside javascript you can use core CQ JS API. It can be convenient if you need to get this information inside your custom JS widgets.              var pageData = CQ.HTTP.get(CQ.HTTP.externalize(CQ.utils.WCM.getPagePath() + "/jcr:content.json")); After that you can retrieve any property you need (assuming it's present in JCR):              var resourceType = pageData ? CQ.Util.formatData(CQ.HTTP.eval(pageData))['sling:resourceType'] : null; Please do not overuse it because it invokes additional ajax call to server. It's OK to use it in edit mode on author instance. Copied from -  http://adobecms.blogspot.com/2014/04/cq-page-properties-in-javascript.html