Content Upkeep
Demonstrate the features available in the Adobe Experience Manager Modernization tool suite. Learn how dev teams can use it to consolidate, convert, or upgrade content to reduce the burden on Authors as the component library evolves.
Continue the conversation in Experience League Communities.
Transcript
Hello, and welcome to this session to discuss about the content upkeep. My name is Kiran Margula, and I am a Senior Cloud Architect at Adobe. In this session, I will be covering three sections, followed by a quick demo. First, what is content upkeep even means and why is it necessary? And the benefits associated with content upkeep or content modernization, and how to formulate a well-thought strategy to execute. And the second, what is an organization tools suite? And how do they help to reduce the manual efforts in the content, upkeeping or content modernization efforts? And third, what are the different tools that are part of this modernization tool suite, and how each tool is going to contribute towards the overall modernization effort? Finally, I will conclude the session with a short demo showcasing the tools in action. So what is content upkeep? Content upkeep means updating your content references and restructuring the JCR tree to support that new reference. For instance, if there is a page which is referencing to a static template, now you go and modify that to an editable template, and then you are restructuring the JCR tree of the new content structure to support the editable template transformation. And similarly, updating the reference of a component from either a foundation component or a custom component to a core component. By doing so, the content editors can now utilize all the latest features, editable templates, policies, style systems, and core components. By taking advantage of the production-ready core components, the teams could even reduce their costs associated with the overall customization costs. Could it be implementation or could it be managing these components during their upgrade process? And in addition to that, by following the core component guidelines and the best practices set out by Adobe, the teams are going to get the immediate benefits of the features like HTLs secured by default design, our Sling Models API framework, or using the Coral 3 UI framework for the dialogues. Finally, by using the version capabilities, which is my personal favorite, development teams can go and continuously improve the components independently without impacting the existing content. Because you are using version one, version two, version three of the component, so while version one or version two is used, you can go and modify version three for your next site’s content. Moving forward, and as I mentioned before, there are a very good set of features that the core components offers. I’m not going to go into every one of them here, but I would leave this list here for your feature reference to explore it further. Moving on, a modernization effort or content upkeeping effort is something that should be thoroughly planned before executing. Therefore, it is important to have a status increase. Let’s review some recommendations. And the first one is, I would consider starting with a production clone. There are two primary reasons. Number one, the tools in the AEM modernization tool suite requires the configurations to identify the content to be modernized. Could it be pages? Could it be the components or the designs to be converted to the policies or the dialogue? So there is going to be the configurations, and eventually you are going to execute this modernization on your production content. So it is always better to start with a clone so that you can come up with those configurations and you can practice it. And the number two important thing is, in the current state of the tools, what they will do is they will run on the existing content and modify them pretty much like in place. So it is better to start with a clone so that you will be impacting your live content unless you come up with good strategy and practice it. Second, you can utilize the reports generated by the best practices analyzer, and then you can feed those reports into Cloud Acceleration Manager, and Cloud Acceleration Manager gives a whole lot of recommendations, telling specifically that these are the pages that are using static components. These are the core components that are used. And you can take them as a starting point to scope your efforts. And that brings us to the next important point, which is, what is going to be my scope of this modernization effort? Should I be doing side by side or page by page, or should I do all my five sites in one single shot? I would recommend doing it on a smaller time, because it is too risky to go and update your content in bulk. So find out what is that scope. And the whole modernization effort should be an iterative process. So identifying a repeatable process of configuring the tools and then making the updates, and then validating the content, whichever is the transformed content, and then you go and publish that content. So eventually it becomes an iterative process. And much of these tools that are part of the modernization tool set, they do their tasks just by putting some configurations. And these configurations primarily are like, okay, this is what the content that you have defined, and this is the replacement or references that you’re going to do, technically call them as rewrites. So even though they are pretty much accomplished by the configurations, there is going to be a need for extending that. So having that consideration and planning is key for the whole estimation. And finally, some of these tools require some post-processing as well. And I will basically show or talk about those things when I am demoing the tools. And planning those things and considering those things into the plan is a good idea too. So overall, the migration effort should be a repeatable process with well-defined scopes. It’s like planning and review and then convert and then validate whatever you have converted and then launch. And do this in iterative fashion until you achieve your modernization goals. Okay, so now we have gone through the benefits and the strategy, and let’s review the tools themselves. What is a modernization tool suite? It is a set of tools that are open source, and it’s basically community contributed. I would like to call out one of my colleagues, Brian Stopp, who is putting a lot of time and thought leadership in developing these tools for the benefit of all the customers out there. And these tools perform a specific task for updating your content to use Adobe’s latest AEM features and best practices. And they are distributed as AEM content package, and you can get the package from Modernization Tools GitHub repository, or they are available in the Maven central repo if you want to bring them through your CI CD pipelines. And they are basically compatible with AEM 6.T and Upforce. The reason being all these modern features that I was talking about, editable templates and all of those features have been introduced into AEM from 6.T onwards. And the tools are basically configurable as I was talking about. So the configurations are pretty much like, okay, what is the pattern that I should be using to find the content for modernization? And once I find what exactly I should be rewriting, what should I be changing the referencing to is kind of a rewrite. And these are all the configurations that you can put in. And that means they are configuration aware. Example, if there is no matching configuration available, then it’s not going to do anything. So that means even though we have a lot of content in there, if you don’t have a matching pattern or matching configuration, it’s not going to cause any negative impacts. Even though you can achieve most of the transformations or modernizations through the configuration that are available or configuration options that you can do, there would be need to extend some of the actual rewrite implementations. If you have to do that, then there is an extensible API that you can use basically. It’s a matter of implementing certain interfaces that are available as part of this framework. And then as long as those implementation classes are registered properly as services that can be found, AEM modernization tools can use those configurations. Okay, so now that we have looked at the tools at a high level, what they are, and then let’s deep dive into each one of the tools that is coming as part of the tool suite. So primarily there are four tools in this tool suite. Number one is the page structure converter, or as we spoke about before, it will take the pages that are using static templates and then make them use the editable templates. So the prerequisites for this feature before using this feature is you have to have a editable template equivalent to your static template. So once you have the editable template, that editable template would be used as a target pretty much to reference to from your source static templates. So this tool does multiple things once it is running. So it will update the template reference of the page from static template to the editable template, the desired editable template as I just mentioned. And it will also update the JCR content tree of each page to conform to the standard hierarchy of an editable template. So if you would have compared a page JCR structure that is using static template versus a page that is using editable template, the structures are different. For example, you will have a root layout container and then you don’t have any passes anymore. They’re going to be all the responsive grids. So during this operation, it will also make several adjustments to the children nodes, such as it replaces all references of paragraph systems with layout containers. And similarly, it will replace all column controls with the layout containers as well. So depending on the configuration, it will also reorder the nodes according to the specified order. So if you want to reorder some of the nodes, you can do that. And also if there is any unlisted nodes are placed at the end in the order they are found, and it can also rename the nodes as specified in the configuration. Let’s say for example, now, if you want to change the power or write part to another responsive grid, you can do that. You can rename the nodes. And also you can remove any unnecessary nodes if you want that through configuration as well. So after you execute this process on any page that is selected based on the rule that we mentioned here, then the resulting page now is going to use editable templates and the layout containers as opposed to the static sampler and the deprecated paragraph system. The configurations for this particular tool are managed through OAG configurations. I have given the samples here. Okay, so next look at the second one in the tool set, which is a component converter. So this is also a very important tool. The intent of this tool is to rewrite the component tree. And the intent is also to convert a resource reference from one Sling resource to another. Right? The feature includes ability to set static values for any properties. For example, this comes really handy if you want to set Sling resource type of the new component to a new value. And so you have to have that ability to do it. And also you can copy the property values from the original node to the new node. And once you, as you copy, if you want to manipulate those values, you can do that using the regular expressions and you can copy the entire Sling nodes when you’re doing it, you can preserve the original order. You can also map the children, meaning while you’re copying the nodes, you can change the name of the nodes and also reorder depending on the requirements. The output of this operation is now we have a component that is referencing to a core component proxy or a custom component that you want to use in your modernized content. So the configurations for the component converter is not a OHA configuration. These are going to be maintained as the JCR nodes. So if you see here, there are two samples that have been provided. So they are like directly in the AEM under apps. So during the demo, I will show you where exactly they will be, but they will be maintained as the JCR nodes. Okay. The third one is policy importer. So this is a little bit different. The intention of this tool is we have the designs, right? So now the designs are going to be, the component designs are going to be the policies while we’re using it for template. So what this will do is it will go and take a design and convert that into a policy that could be used in the table templates. So even though it basically converts these designs into policies, the only difference apart from component conversion is it will convert, but it doesn’t do it in place. It will convert and keep it in the conf location where the regular policies is going to be available. So once that policy config is available, then the template data can go and use that policy. One thing to note is that it uses the replacement nodes, sling resource type property for creating the required structure in the policy configuration location. As I said, the resulting of this executing this tool is basically creates the policy node so that it could be used by the template data to apply this policy. And also I have given a sample configuration that you can use as a reference. Okay. So the last one is the dialogue conversion tool. Some of you might have heard about it and used it as well. And this tool, particularly what it will do is it will take a dialogue node and it will convert that into CQ colon dialogue node. And also it will take a design underscore dialogue node and convert that into a CQ colon design underscore dialogue. And this is also basically the reason why we do this in this tool is to convert the classic UI or CQ dialog to a CQ. The tool does not update the original dialogue node though. I mean, it will leave it there. And however, it does have, you know, same features just as previously with component and policy tools, but with a couple of additional dialogue specific features such as it has the facility to add common dialogue properties or render conditions. And yeah, your modernization tools out of the box, the package, once you get it installed, it has most of the rules to, it’s not most, you have all the rules necessary for converting any provided classic or coral two widget to coral three equivalent. However, if we have a custom component or custom dialogue develop, then that is something that you have to take care of by adding the corresponding rule, right? So another difference with the dialogue converter is as this is something that is primarily in a code driven, a AM development team can run this particular tool locally and then import those configurations from AM into their code and manage it through their CACD pipeline. They don’t have to have all the production content to run this tool. They can actually go ahead and run the tool locally and then add this thing into your code base. As before, I have dropped a configuration for your reference as well. And if you’ve been watching this closely, most of these configurations follow a specific pattern. Like we have a pattern node and rewrite node, and I’ll show you where exactly they will sit in the JCR when we are doing the demo. All right, with all that being covered, let me do a quick demo of the tools before we wrap up. I just want to give a quick glimpse into the modernization tools documentation. I mean, it has a whole lot of useful information about planning and configuration and developing and extending the APIs and whatnot. I would like everybody to check it out, please. Now, once you install the tools package, the modernization tools, you will find the tools under tools and sites. And these are the tools that I was talking about, right? And then now quickly jump into the page conversion. As I said, the first thing that somebody should be doing is, okay, I’m using Geometrics home base for this demonstration, and somebody has to create an editable template, right? So that itself is a process, analysis process. And something that tool cannot do, this is something that somebody has to do. So someone has to go and understand basically the anatomy of this space. So we have header and we have footer, which is standard, and there is a two column layout here, and also there is a lead component, right? And what I did is I went ahead and created a template, editable template that can accommodate that content once it converts. So once the editable component is here, if you observe, we have the header and we have the footer and the two column. Now they become the layer containers and we have the lead component and the result. And these are all the core components or custom components that I’ve been using. Now let’s take a quick look at before we converting, this particular template, which is under content geometrics English base, the JCR content, it is using this particular template, right? The homepage template. So now we had to go and run the tool. Before running the tool, we had to configure what is the content that should be selected for modernization. So that’s when this particular configuration comes into picture. Now we are going to key in, okay, go and find any pages that are using this static template, and then replace that with our update that are modernized that with this particular editable template, and also set the Sling resource type value to the editable template. And if you want to change any order of the components, you can do that. And if you want to remove, you can remove them. And if you want to rename, you can rename them as well. So for example, here we are renaming the power and write power with corresponding responsive grids that are created by the layout containers. Now this piece right here is very important, right? So where is this particular number coming from? This one is basically coming from, this is the responsive grid ID that is part of this particular editable template when we created, right? So this is the one. You can see it when you go into the corresponding editable template, and then you can drill down through the structure in JCR content. You will find all the components and the corresponding layout container. So this is the ID that is coming into this particular configuration. Okay. So let’s run this tool real quick. So what we are going to do is, quickly checking the time set. We’re going to go and key in the path. So the way tool works is basically it is say, okay, under this content tree, anything that is matching my pattern, meaning any pages that are using that particular static template, list them out. Then you can go and select those pages and then basically you can convert. It’s going to be super fast. And then once you go and convert the page, you won’t see a huge difference in the page in terms of the layout because it just converted all the passes into layout containers and things like that. So if you want, you can go and refresh and see that the template just changed. And the same resource type as well as we configured. So that’s the page template. Now let’s move on to the next one, which is the component converter. So this is what I was talking about under the configurations for the component converter are in JCR. So they are under apps, CQ, modernize, component, and the rules. And let me quickly showcase what is there in one of the rules. So you have a rule and then the pattern. The pattern will tell you exactly what has to be found and how things has to be found. So if you have multiple properties and the values under a pattern, all of those things are going to be matched and that particular specific content is going to be listed when you are finding them. Now the replacement, right? What should I be replacing this with? Now, if you look at this, I’m finding any component that is using geometrics header component, then I’m going to replace that with geo demo components content header. And also at the same time, I’m going to copy the value of the header component could be image reference, could be JCR title, could be text and everything into the new structure. This is when if you want to go and change some of these values, you can do it in your replacement with the configurations. Being said that I went ahead and pulled in all the components that are matching. Now I can go and basically convert them. I think there is something wrong here. Okay. Maybe it’s a session. And then moving on. I’d like to quickly go and show you the policy importer. So as I mentioned, the policy importer, what it will do is it is basically going to go into the designs and I’m just showing you a title component whose design is under ETC node, and then it’s going to convert that particular design into your policy. So one thing to note here is I have, again, applied the pattern and found there are two couple of designs that I want to convert. As I mentioned, this is going to go and sit under a different hierarchy under conf. You have to give where this particular policy is going to go and place into. So I’m going to go and run this as well. So now under conf geo demo settings, it should basically see the policy that we have imported. This is the policy that we just basically imported. So it comes with a JCR title called imported and then page part title. So the title component, sorry, the title components design pretty much converted into a policy. Now this policy can be applied on the A-table templates in the components. So the dialogue conversion is pretty much similar method. You will go and apply and look for the dialogues and then you can just go and convert them. And in the final state, once you do all these things, then all you have to do pretty much is go and verify whether all of your page is still looking fine or not. So if you observe all these dialogues and everything has been converted pretty much to the new organized content. So I think with that, I’m going to go and stop the session, conclude the session. Let me quickly go and… Okay. So the next steps, in terms of the next steps, I would encourage everybody to go through these quick references and then I leave those references in there for you to further explore AM automation tools and check out the more information on those. Pauline, I don’t know whether we have time to kind of answer any Q&A. There’s only one question in the Q&A tab so far, but if anyone has additional questions, you can go to this link, which I will share and post any of your questions there and you can answer them on the site. I’m posting the chat now. If you have questions later on. Thank you, everybody, for joining. Thank you. Thanks everyone. It’s time.
Additional Resources
recommendation-more-help
3c5a5de1-aef4-4536-8764-ec20371a5186