Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

Migration from another CMS to AEM

Avatar

Level 2

Please provide me some reference regarding the approach, tools, etc. for migration of assets, contents, links, metadata, data, etc. from another CMS to AEM.

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

@manishc97360515,

I had experience with migrating a CMS to AEM in the past, and here's what I've done:

  1. Preparation:
    1. In the old CMS, you need to expose structured JSON that AEM can use to create pages; this includes page properties and components properties; a JSON schema per root page, so, for example, like:
      • mywebsite.com/migration-api/services.json (this exposes all child pages under services for your servlet's consumption)
      • mywebsite.com/migration-api/teams.json
      • mywebsite.com/migration-api/products.json
    2. Identify which page elements are components and expose JSON promptly (forward-thinking of which components to create in AEM)
  2. Create new components in AEM.
    1. Ensure that these components are re-usable, and can be flexible. What properties would you like the author to control?
  3. Create templates using the new components.
  4. Create empty pages as clone-ables using those templates. These pages will be used by the servlet to create new pages.
  5. AEM Servlet, PageManager, and JCR API
    1. Create an AEM Servlet that consumes the structures JSON (from the old CMS)
    2. The AEM Servlet will copy(clone) the clone-able pages to create new pages in AEM; use the PageManager and JCR API
      1. Use a service user to get the AEM session, so you have the correct permissions to create, delete, write, to the JCR.
    3. Use the (Gson Java Class API or Jackson Java Class API), and use JCR API to fill in page properties and component properties as required.
  6. Validate: ensure the pages are working as expected.

Note: it would be a bit more challenging when preparing structured JSON if your old CMS is Wordpress, because the page is constructed as an rich-text HTML code; you would need to identify similarities and understand what the best possible way it is to expose JSON for page properties and component properties. 

 

View solution in original post

3 Replies

Avatar

Correct answer by
Community Advisor

@manishc97360515,

I had experience with migrating a CMS to AEM in the past, and here's what I've done:

  1. Preparation:
    1. In the old CMS, you need to expose structured JSON that AEM can use to create pages; this includes page properties and components properties; a JSON schema per root page, so, for example, like:
      • mywebsite.com/migration-api/services.json (this exposes all child pages under services for your servlet's consumption)
      • mywebsite.com/migration-api/teams.json
      • mywebsite.com/migration-api/products.json
    2. Identify which page elements are components and expose JSON promptly (forward-thinking of which components to create in AEM)
  2. Create new components in AEM.
    1. Ensure that these components are re-usable, and can be flexible. What properties would you like the author to control?
  3. Create templates using the new components.
  4. Create empty pages as clone-ables using those templates. These pages will be used by the servlet to create new pages.
  5. AEM Servlet, PageManager, and JCR API
    1. Create an AEM Servlet that consumes the structures JSON (from the old CMS)
    2. The AEM Servlet will copy(clone) the clone-able pages to create new pages in AEM; use the PageManager and JCR API
      1. Use a service user to get the AEM session, so you have the correct permissions to create, delete, write, to the JCR.
    3. Use the (Gson Java Class API or Jackson Java Class API), and use JCR API to fill in page properties and component properties as required.
  6. Validate: ensure the pages are working as expected.

Note: it would be a bit more challenging when preparing structured JSON if your old CMS is Wordpress, because the page is constructed as an rich-text HTML code; you would need to identify similarities and understand what the best possible way it is to expose JSON for page properties and component properties. 

 

Avatar

Level 5

@manishc97360515 Can you please confirm from which CMS you would want to migrate content to AEM.

 

In order to Migrate assets, you can use the below ACS Commons tool to import assets with metadata in bulk

https://adobe-consulting-services.github.io/acs-aem-tools/features/csv-asset-importer/index.html

 

AEM also provide OOTB bulk metadata importer for assets.

https://docs.adobe.com/content/help/en/experience-manager-64/assets/administer/metadata-import-expor...

 

For page migration would be bit tricky as mentioned by @BrianKasingli , As the component structure in your existing CMS and AEM might not be same, which would require you do define mapping between the components and properties. Also it will be hard to identify all the content which is used in multiple pages, So you can create it as a Experience Fragment and reuse. Also using features like inheritance would be tricky. It all depends on the website content and complexity. Do consider manual content creation as an option if the site has fewer pages, if part of the site follows same structure and uses few/same components then you can write custom code to migrate it like product details page, help articles.

 

 

Avatar

Community Advisor

There can be multiple approaches for migration, as already suggested few here. I am going to add one more which we are using -

1. Getting Old CMS page XML as zip.

2. Written groovy script to convert those XMLs into AEM page .content.xml and created AEM package using a maven project.

3. Identified all the possible components from old CMS to new AEM Components and mapped using a groovy script and creating the AEM page for each old cms page XML.

4. Deploying Content using a package manager.

5. For Assets similar approach to get the files in local as folder structure and based on size we would define a strategy to deploy in AEM.

 

Note: For us source is the production and we would be deploying the same content in all the environments, that's why converting/creating AEM pages locally.

 



Arun Patidar