{"id":46566,"date":"2017-02-28T12:13:11","date_gmt":"2017-02-28T06:43:11","guid":{"rendered":"http:\/\/www.tothenew.com\/blog\/?p=46566"},"modified":"2017-03-16T11:30:44","modified_gmt":"2017-03-16T06:00:44","slug":"important-things-to-consider-for-migration-to-aem-part-2","status":"publish","type":"post","link":"https:\/\/www.tothenew.com\/blog\/important-things-to-consider-for-migration-to-aem-part-2\/","title":{"rendered":"Important Considerations for Migrating Content from a CMS to AEM &#8211; Blog Series &#8211; Blog 2"},"content":{"rendered":"<p><span style=\"font-weight: 400\">This is the second part of the two-blog series on &#8216;Important things to consider for Migrating Content to AEM&#8217;. <a title=\"Important things to consider for migration from any CMS to AEM using Package Manager\" href=\"http:\/\/www.tothenew.com\/blog\/important-things-to-consider-for-migration-from-any-cms-to-aem-using-package-manager\/\" target=\"_blank\">Click here<\/a>\u00a0to checkout blog-1. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Following are some more points to help in the process of <a title=\"AEM Development and Migration\" href=\"http:\/\/www.tothenew.com\/wcm\/cq-aem-development-consulting\">migration to AEM<\/a>: <\/span><\/p>\n<ol>\n<li style=\"font-weight: 400\"><b>Migration Strategy<\/b><span style=\"font-weight: 400\"><span style=\"font-weight: 400\"><span style=\"font-weight: 400\">: Decision of what strategy\/approach is needed to be followed for migration is very important. Following are the 3 strategies and respective criteria that can help in that decision:<\/span><\/span><\/span>\n<ul>\n<li style=\"font-weight: 400\"><b>Manual migration<\/b><span style=\"font-weight: 400\">: If most of the content doesn&#8217;t follow any specific pattern and requires a lot of cleanups in post-migration, or in cases where content follows a defined pattern but there is not much content (&lt;1000 pages) to be migrated, manual content migration proves to be the efficient choice. <\/span><\/li>\n<li style=\"font-weight: 400\"><b>Automation Migration Scripts<\/b><span style=\"font-weight: 400\">: If the majority of the content follows a pattern and there is a medium level of content (1000-3000 pages of 1-2 templates) and is easy and fast to program with minimal coding, choice of <a href=\"http:\/\/www.tothenew.com\/blog\/infograph-fundamentals-of-migrating-content-to-aem\/\">automation migration<\/a> scripts makes more sense. <\/span><\/li>\n<li style=\"font-weight: 400\"><b>Automation Migration Scripts using ETL Tool<\/b><span style=\"font-weight: 400\">: In the case of a large amount of content migration(&gt;3000 pages), use of an ETL tool like Talend helps reduce the effort of writing the boilerplate code, and increases modularity, reusability, productivity and performance by a large multiple. Major advantages of an ETL are Talend for content migration. Read more about this on <a title=\"Advantages of an ETL tool in Content Migration\" href=\"http:\/\/www.tothenew.com\/blog\/advantages-of-an-etl-tool-in-content-migration\">my blog here<\/a>.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><span style=\"font-weight: 400\"><span style=\"font-weight: 400\">Obviously, any of the above approaches can be mixed with one another to get the most productive process that suits your needs.<\/span><\/span><\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><b>Migration preparation<\/b><span style=\"font-weight: 400\"><span style=\"font-weight: 400\">: Pre-migration preparation includes cleanup and global variable initialization of static data. Static content includes any configurations or row-specific data that may be fetched from a property, XML or excel file.<\/span><\/span>If the static content is required to be read for every row(page), it should be fetched once and kept in global variables before actual content migration starts. This eliminates the need to run the file handling code for every row of data. Although, at first it may seem as wasteful to store everything from files into global variables, but it&#8217;ll prove its worth in <a href=\"http:\/\/www.tothenew.com\/blog\/infographic-9-performance-optimization-techniques-for-a-great-mobile-experience\/\">performance optimization<\/a> in the long run. Eg: In one of the migration projects, the links to assets (documents and images) were present in 2 excel files and were connected to respective pages through an \u2018ID\u2019 matching the pages.The time to run the migration scripts for over 15k pages reduced by a third when I moved the data from excel files to global variables as instead of reading from a file, now I just had to traverse a global list of objects.<\/li>\n<li style=\"font-weight: 400\"><b>Persist Status Logs in a file instead of console<\/b><span style=\"font-weight: 400\"><span style=\"font-weight: 400\"><span style=\"font-weight: 400\">: Depending on the content size, migration is a performance intensive task no matter how much performance optimization is done. This sometimes may cause your system to crash due to insufficient memory or frozen processor or also may be due to external factors like power-outage. Persisting migration status logs in a file rather than on a console may seem to add a little overhead to the scripts, but it helps in knowing the exact status of the migration process, and sometimes even the cause of failure, before the system failure occurred which in turn helps in identifying if anythings needs to be reverted or fixed.<\/span><\/span><\/span><\/li>\n<li style=\"font-weight: 400\"><b>AC Handling using package manager<\/b><span style=\"font-weight: 400\">: If the content to be migrated or the parent path where the content to be migrated contains ACL node, you should look at the ACL filter modes that you need to add in the filter.xml when you are migrating using AEM&#8217;s Package Manager. By default, the ACL Nodes are left untouched on installing a package. Filter modes available for AC Handling are:<\/span>\n<ul>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">Ignore<\/span><\/i><span style=\"font-weight: 400\"> &#8211; preserve ACLs in the repository<\/span><\/li>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">Overwrite<\/span><\/i><span style=\"font-weight: 400\"> &#8211; overwrite ACLs in the repository<\/span><\/li>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">Merge<\/span><\/i><span style=\"font-weight: 400\"> &#8211; merge both sets of ACLs<\/span><\/li>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">Clear<\/span><\/i><span style=\"font-weight: 400\"> &#8211; clear ACLs<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">More information about AC handling can be found in\u00a0<\/span><span style=\"font-weight: 400\"><span style=\"font-weight: 400\"><span style=\"font-weight: 400\"><a title=\"Adobe's documentation for Package Manager\" href=\"https:\/\/docs.adobe.com\/docs\/en\/aem\/6-2\/administer\/content\/package-manager.html\" target=\"_blank\">Adobe&#8217; s documentation<\/a>.<\/span><\/span><\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><b>Mime types of DAM Assets<\/b><span style=\"font-weight: 400\">: MIME Type defined in the cq:resource node of DAM assets should be given special attention, as it determines the behavior of an asset for the end user. When a DAM asset is migrated, the actual file (Image or Document) is renamed to &#8220;original&#8221;. Due to the absence of an extension, the default MIME Type assigned to the asset is &#8220;application\/octet-stream&#8221; instead of the extension derived MIMETypes shown in Felix console as shown below:<br \/>\n<img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-46569\" src=\"\/blog\/wp-ttn-blog\/uploads\/2017\/02\/Blog_default_mimetype.png\" alt=\"Default Asset MIMEType\" width=\"728\" height=\"156\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2017\/02\/Blog_default_mimetype.png 728w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/Blog_default_mimetype-300x64.png 300w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/Blog_default_mimetype-624x133.png 624w\" sizes=\"(max-width: 728px) 100vw, 728px\" \/><br \/>\nThis creates two problems:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Changes the behavior of an asset, as now a GET request to that asset&#8217;s path will download it instead of opening it in a browser window irrespective of the browser supporting the plugin to handle that asset file. <\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><span style=\"font-weight: 400\">The thumbnails of the asset will not be generated, even if DAM workflows are enabled.<\/span><\/span><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>This is the second part of the two-blog series on &#8216;Important things to consider for Migrating Content to AEM&#8217;. Click here\u00a0to checkout blog-1. Following are some more points to help in the process of migration to AEM: Migration Strategy: Decision of what strategy\/approach is needed to be followed for migration is very important. Following are [&hellip;]<\/p>\n","protected":false},"author":535,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":17},"categories":[1],"tags":[1235,4847,1853,4461,2007,4460,4459],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/46566"}],"collection":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/users\/535"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/comments?post=46566"}],"version-history":[{"count":0,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/46566\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/media?parent=46566"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/categories?post=46566"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/tags?post=46566"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}