AEM Migration : build a component inventory

Posted in AEM Tutorials By Raj On August 5, 2017

 

I am going to publish series of article’s on AEM Migration, here,  the first thing which I have taken is to build a component inventory by referring existing application, in coming articles, I will explain to you how to migrate content etc…

When you are opening doors to migrate your content to new cms, you are getting the opportunity to re-design your website also, there you need to build a component inventory, this article covers how to build a component inventory when you are migrating existing system to AEM?

While building component inventory, I suggest you first try to understand existing system, then you can easily map existing component to AEM components ex: if the existing system is built on Sharepoint then every web part maps to one component which is easy way to get component inventory if you have access to existing code base, but before proceeding with this you can consider so many other parameters, first thing why client wants to migrate to AEM, what challenges he is facing in existing system, if the client is not happy with existing inventory and too much authoring work he is doing etc.. then you should not rely on existing inventory, you need to refer it just to get some idea

While building component inventory, I suggest you first try to understand existing system, then you can easily map existing component to AEM components ex: if the existing system is built on Sharepoint then every web part maps to one component which is easy way to get component inventory if you have access to existing code base, but before proceeding with this you can consider so many other parameters, first thing why client wants to migrate to AEM, what challenges he is facing in existing system, if the client is not happy with existing inventory and too much authoring work he is doing etc.. then you should not rely on existing inventory, you need to refer it just to get some idea

If you don’t have access to existing code base? then what? how can you identify component’s

Finding Components

What is a component? a  component is a reusable unit which helps us to solve specific use case, so while seeing the page itself you must be in the situation to find out components by doing logical segregation

Let me take simple example, this is the home page of my blog and I have  identified 6 components on it, but logically I marked 7 red color boxes, you may get question why 6 components and 7 boxes because, if you see closely we are using “host gator” ad banner image in two places, so build once and reuse in another place

this is only to get initial idea, but when it goes to real time projects this may change based on the requirements

keysandstrokes-2

I am going to put below components in my aem components inventory list

Logo Component

The first thing is logo component, which is very simple component, there is no dynamic functionality is involved here, you are going to author text or image only once and displaying it on the page

Image Component

Image component also simple component, because this also renders the image whatever you authored in the authoring dialog

Navigation Component

Navigation component, it is difficult to identify whether it is fetching data dynamically or statically authored using multifield component, there the toss comes into picture, you need to make some assumptions and proceed with it, the assumption which I make is it is dynamic data, so I am marking it as medium complex component

Article Excerpt Component

Another important component is this article excerpt component which is complex one because it generates article excerpt’s dynamically by reading published articles, no body wants to author excerpts manually, which is a time-consuming process, it contains article title, article meta data and also read more link

Facebook Component

Final component is Facebook component, which integrates with Facebook to get feed data, I consider this as a complex one because it requires basic knowledge of how facebook API’s work

Once all components are identified then you need to find out complexity of every component and finally get the application complexity

Application complexity?

Very tough, confusing and interesting question for most of the people who are working on content management system’s if you ask them to identify a component’s on the existing system and their complexity. When ever I am planning to migrate application from existing system to new CMS system, the first thing which I do is I will try to analyze existing system to identify how many components, templates are there and what is the complexity of those, analyzing existing site will help you to understand overall complexity of application as well as what kind of functionalities exist, based on my experience I always give my first preference to identify complexity of the components and then reusability

To get entire application complexity, first, you must identify the complexity of the component’s and then build an inventory, once you have inventory then it is easy to measure application complexity while identifying the complexity of components you must keep these things in mind

Think about it what are you going to build first, a static component or dynamic component, if it is a dynamic component from where the data is coming, any third party integrations are involved, how much FED work is going to be there etc…

What is a static component?  the static components will not have any logic it will just read the data from the repository and render it on the page there will be no logic involved here, in AEM it is just reading authoring dialogs values and display without performing any operations, when it comes to complexity you can consider these are simple components as well

The dynamic components perform some back-end logic something like reading data from the child nodes or reading data from some other pages etc or interacting with external system’s etc… you can consider complexity level for these are medium or complex  depending upon the functionality involved

Components Reusability

The other thing which we need to consider is reusing component’s, I think it is more favorite topic for most of the people

Reusing is a big word, it is difficult to identify components with out having good knowledge on entire application while analyzing component’s, as an architect or designer or business analyst it is your job to identify right re-usable component’s and build a component inventory but, you should not stop here, you need to visualize feature, the people who are having good experience in designing applications they can identify what components can come under re-usable components, here the domain knowledge also plays very important role

The most important step don’t do over architecture, some people what they do is to make more reusable they will try to put so many things in single bucket and it may lead to maintenance issues so, I suggest do whatever is required and follow KISS principle

Let me take a simple list collection component example which is on my blog home page if you see that the front-end is common for “Recent posts” and also the “Pages Component” which is in the footer, if you see that it has one heading and collection of links, I see that the front end is same but, what is the difference is the functionality behind it, so you can not reuse list collection component 100% out here, because the “Recent posts” fetches the last five published articles and the “Pages Component” display’s list of pages under home page

Here, you need to take a wise decision, you can not reuse 100% here, only 30% that too front end display, in the authoring dialog of AEM component you can have drop down list which has two options, recent posts, and child pages, on selection of list items you need to execute different logic, it is good for two options, but what if options list crosses more than certain limit then it is going to be over architecture and the content author may get confuses, think another side don’t create separate component for every list, if you do that the inventory size increases and also it confuses content author while authoring a page

AEM Component Inventory

Once everything is completed then you need to build an inventory, the below template gives you some high-level idea on component inventory list, you can download sample template here AEM_Component_Inventory_Template

aem-component-inventory

Once the inventory is ready then giving estimation is pending, you can give estimation based on the complexity you can find sample estimation in the inventory list