{"id":37822,"date":"2016-07-23T15:15:53","date_gmt":"2016-07-23T09:45:53","guid":{"rendered":"http:\/\/www.tothenew.com\/blog\/?p=37822"},"modified":"2017-03-16T11:28:53","modified_gmt":"2017-03-16T05:58:53","slug":"important-things-to-consider-for-migration-from-any-cms-to-aem-using-package-manager","status":"publish","type":"post","link":"https:\/\/www.tothenew.com\/blog\/important-things-to-consider-for-migration-from-any-cms-to-aem-using-package-manager\/","title":{"rendered":"Important Considerations While Migrating Content from a CMS to AEM Using Package Manager &#8211; Blog Series &#8211; Blog 1"},"content":{"rendered":"<p>Recently, I wrote scripts for migrating the XML Output of the source CMS to Content XML for installing in AEM using AEM\u2019s package manager.<\/p>\n<p><span style=\"font-weight: 400\">Following are some scenarios\/challenges that I experienced while doing <a href=\"http:\/\/www.tothenew.com\/wcm\/cq-aem-development-consulting\">migration to AEM<\/a> from another CMS:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><b>Node Name<\/b><span style=\"font-weight: 400\"> : Node name should be mapped from that XML element that is :<\/span>\n<ol>\n<li><span style=\"font-weight: 400\">Unique for every page in the same hierarchy<\/span><\/li>\n<li><span style=\"font-weight: 400\">Never empty or null for any page <\/span><\/li>\n<li><span style=\"font-weight: 400\">Contains no or minimum special characters that are not part of JCR naming restrictions. Restricted characters include : \u201c\/\u201d, \u201c:\u201d, \u201c[\u201c, \u201c]\u201d, \u201c|\u201d, \u201c*\u201d<\/span><\/li>\n<li><span style=\"font-weight: 400\">Not language-dependent: It shouldn\u2019t contain any special characters from other languages. Preferably, it should be same in all languages so that the hierarchy of pages exactly matches in all language copies.<\/span><\/li>\n<\/ol>\n<\/li>\n<li style=\"font-weight: 400\"><b>Rich Text <\/b><span style=\"font-weight: 400\">: Inclusion of Rich Text in the content XML should be done after the HTML escaping is done for special characters and tags as the Package manager will show errors for characters like \u201c<em>Less than(&lt;), Greater than(&gt;), Quotes(\u201c) <\/em>and<em> Ampersand(&amp;)<\/em>\u201d which are to be encoded as &#8220;<em>&amp;lt;, &amp;gt;, &amp;quote; <\/em>and<em> &amp;amp;&#8221;<\/em> respectively.<\/span><\/li>\n<li style=\"font-weight: 400\"><b>Tags:<\/b><span style=\"font-weight: 400\"> While adding any Tags to content pages XML&#8217;s &#8216;cq:tags&#8217; property, one should make sure that those Tags are present beforehand in the instance where the package will be installed, otherwise the Package Manager removes all those tags from the pages which are not found in the instance.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>XML Formatting<\/strong> : I noticed that unformatted\u00a0XML elements sometimes lead to unsuccessful installation through Package Manager. Thus, content XMLs should be formatted before installation.<\/span><\/li>\n<li style=\"font-weight: 400\"><b>DAM Migration Packages:\u00a0<\/b>While installing large content packages like images and documents, one should keep following things in mind:\n<ol>\n<li><strong>Package size should be &lt; 2GB<\/strong>: Package Manager doesn\u2019t allow package size to be over 2 GB. Thus, installation for Image and documents packages should be done in batches. This also helps reduce the performance hit on the\u00a0server.<\/li>\n<li><strong>Modes in filter.xml<\/strong>: When installing multiple packages under the\u00a0same hierarchy, Package Manager overrides the parent node and thus child nodes are deleted\/overridden from the last installed package. This is because the default &#8216;mode&#8217; for filters is &#8216;replace&#8217;. Thus, the\u00a0value of &#8216;mode&#8217; should be set to &#8216;merge&#8217; or &#8216;update&#8217; for the required filters in the filter.xml\u00a0to merge or update the nodes under a hierarchy.<br \/>\nYou can find more info about filter.xml and different modes <a title=\"filter.xml &amp; Modes\" href=\"http:\/\/jackrabbit.apache.org\/filevault\/filter.html\" target=\"_blank\">here<\/a>.<\/li>\n<li><b>Images<\/b><span style=\"font-weight: 400\"> :\u00a0<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">AEM provides an OOTB workflow named\u00a0<strong><em>DAM Update Asset,\u00a0<\/em><\/strong>which automatically creates renditions for images that are uploaded to DAM.\u00a0If you already have renditions of images from the previous CMS, before installing the migrated Images Package Manager or uploading them directly to DAM, the 2 launchers (for 2 events, created and modified) for <em>DAM Update Asset<\/em> Workflow should be disabled which<\/span>\u00a0will help reduce the load on the server.<\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><b><\/b><b>Documents and PDFs<\/b><span style=\"font-weight: 400\">\u00a0: <\/span>\n<ul>\n<li style=\"font-weight: 400\">When a PDF is uploaded to DAM, launches the\u00a0<em>DAM Update Asset<\/em> Workflow for <strong>Page Extraction<\/strong> and thus launching one instance of\u00a0<em>DAM Update Asset<\/em> Workflow for each page of PDF. If individual pages are not required or you already have them from previous CMS, you should disable the 2 launchers for <em>DAM Update Asset<\/em> Workflow.<\/li>\n<li style=\"font-weight: 400\">Disabling the 2 launchers of\u00a0<em>DAM Update Asset<\/em> Workflow will also help when you already have <strong>thumbnails<\/strong> for those PDFs from the previous CMS.<\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\">Launchers can be disabled by selecting the\u00a0<em>Launchers<\/em> tab from\u00a0\/libs\/cq\/workflow\/content\/console.html\u00a0as shown in the below picture.<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-37982\" src=\"\/blog\/wp-ttn-blog\/uploads\/2016\/07\/Screenshot-from-2016-07-23-15-01-25.png\" alt=\"AEM Workflow Launchers\" width=\"805\" height=\"228\" \/><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>Move\/Rename Pages in Migrated Content:\u00a0<\/strong>\u00a0<\/span>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Once the migration of Pages is done and you realize that any Migrated Pages are needed to be moved\/renamed, \u00a0this move should be done using Siteadmin&#8217;s Move\/Rename feature, which updates all the references to that page in other pages\/components.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\">In Classic UI mode, this <em>Move\/Rename<\/em>\u00a0feature updates a max of 150 references by default and if more references are found, it will just move\/rename the page without updating any references. Whereas in Touch UI, although it doesn&#8217;t show the references above 150, it still updates all of them.<br \/>\nThis default value can be updated by<\/p>\n<ol>\n<li>Overlaying\u00a0\/libs\/cq\/ui\/widgets\/source\/widgets\/wcm\/HeavyMoveDialog.js\u00a0and changing the value of\u00a0<em><strong>maxRefNo<\/strong><\/em> in Classic UI mode.<\/li>\n<li>Changing the value of <em><strong>maxreferences<\/strong><\/em> property in\u00a0\/libs\/wcm\/core\/content\/sites\/movepagewizard\/jcr:content\/body\/content\/items\/referencesStep\/items\/references<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<p>There is one more blog in continuation to this blog which also outlines more considerations while migrating content to AEM. Here&#8217;s the <a title=\"AEM Content Migration Blog 2\" href=\"http:\/\/www.tothenew.com\/blog\/important-things-to-consider-for-migration-to-aem-part-2\/\">second blog<\/a> of the blog series.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Recently, I wrote scripts for migrating the XML Output of the source CMS to Content XML for installing in AEM using AEM\u2019s package manager. Following are some scenarios\/challenges that I experienced while doing migration to AEM from another CMS: Node Name : Node name should be mapped from that XML element that is : Unique [&hellip;]<\/p>\n","protected":false},"author":535,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":59},"categories":[1],"tags":[3783,2007,3576],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/37822"}],"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=37822"}],"version-history":[{"count":0,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/37822\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/media?parent=37822"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/categories?post=37822"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/tags?post=37822"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}