Adobe AEM is the perfect platform for creating and managing a personalized user experience in a website or web application. But is AEM also a viable content services platform? In the first part of this article I described the modernization of an existing application based on Opentext Documentum, using Apache Sling 12. In this new article I will share some new information about this project and my personal thoughts on positioning Adobe as a content services platform.
The Protocollo Informatico application works only for authenticated users. This application uses the standard authentication exposed by Apache Jackrabbit. We just added two standard OSGI bundles and made some little configurations to authenticate users via the corporate Active Directory. Authorization, the act of granting an authenticated user permission to do something, is completely left to the Apache Jackrabbit layer. We just added security rules and applied these to the most important nodes in the database. Documentum and Apache Jackrabbit are very similar regarding the authorization control. Both can be very granular and define a specific rule to protect a single object/node. The main difference is that Apache Jackrabbit makes life easier for the repository administrator: whereas each object in Documentum must be protected by an explicit rule, in the Java Content Repository it is sufficient to apply a protection rule to a node, to protect with the same rule, implicitly, all nodes that have that node, directly or indirectly, as their parent. Also talking about security, we have applied an SSL certificate and enabled only the HTTPS protocol for access to Apache Sling: thus, both the front-end application and all exposed rest services are using this secure protocol to invoke services, to access application functionality and also the database.
Data migration is the most important part of every Documentum replacement project, but it is a relatively simple task in our scenario. Apache Sling exposes by default REST services to manage database nodes as well as to manage users, groups, and permissions. We explicitly installed the Opentext Documentum REST Services module to the Documentum environment to have a similar functionality. Documentum REST Services is a set of RESTful web service interfaces (I really like this Opentext implementation) that interact with the Documentum Platform. Being able to interact with the Documentum repository and Java Content Repository via Rest services, it was relatively easy and fast to migrate the data. In fact, I created five small Python applications that allowed all the necessary information and configurations to be migrated. Much of the magic is done by Python, with the many libraries available. With very few lines of Python code it was possible to migrate Documentum objects, files, user, groups one by one and load them in the Java Content Repository. To simplify and improve Python code readability (and so, its maintenance for future uses) I created two custom Apache Sling servlets. One servlet returns a Json with all the nodes path that satisfy a specific SQL-2 query (the standard query language of every Java Content Repository); this is useful when the Python application needs to search object by metadata, for example select * from [pi:registration] where [pi:number]<100. The second servlet simply returns the count of the results of a SQL-2 query: this is super important to make many numerical checks to validate data migration (number of the nodes, number of the pi:registration instances, number of the the pi:registration instances with a specific value in a property, number of user definitions migrated, etc). This last servlet it is not only useful but it is necessary because the SQL-2 language does not offer a count(*) function. Source code of both servlets can be found on GitHub in the public repository artika4biz/sling-utils.
After the usual application and data validation, our customer switched-off the older Protocollo Informatico application. Overall, the response time of the new application is much faster than the older one, thanks to a more modern and up-to-date front-end architecture, considering that the older one was built more than fourteen years ago, years before the availability of languages like TypeScript and of frameworks like Angular!
The new application exposes the same functionalities, with a simple but effective user interface, while remaining very similar to the previous one. The user is happy to use an application that appears more performant, without major functional changes thus the overcoming the typical user resistance to change was easily overcome.
Porting the new Protocollo Informatico application to Adobe AEM
The Apache Sling is at the basis of the Adobe Experience Manager. The AEM application ideally adds a new layer to the architecture shown before. The new layer adds new web applications, like CRXDE Lite, AEM Sites, AEM Forms, AEM Assets and more! This new layer makes the magic and provides powerful and complex functionalities with an easy-to-use UI. The cost to port the Protocollo Informatico to the AEM is almost zero. The implementation of the Protocollo Informatico application has been managed thinking about porting to AEM. This is important because when our customer will be interested and ready, any AEM developer can import the application and all the data into AEM.
Implement content management applications using Apache Sling or Adobe AEM provide many benefits, like these ones:
- For Adobe AEM customers, applications decommissioning using AEM could be a way to modernize their applications, to reduce the TCO of these and to reduce licenses costs because one by one, applications based on legacy CSP can be switched-off, until to switch-off just the legacy CSP, saving licenses or maintenance fee costs; in addition, Adobe AEM customers can leverage investments on AEM, distributing AEM licenses costs between more applications, using budgets from Functional Areas of Business, different from the Marketing, the functional area that usually provides the budget for experience management implementations; in fact CSP are used for internal applications, like Protocollo Informatico, or other applications requested by HR, Productions, Finance, etc.
- For system integrators with a special focus on AEM, application decommissioning using AEM could be a very new source of revenue, re-using internal skills.
- For system integrators enough smart to propose Apache Sling to customers that are not using AEM, not only do a good job advising a mature and powerful open-source technology but could potentially get other revenue selling AEM licenses later; Apache Sling could become soon a Trojan horse to sell AEM licenses, because customers could be interested to acquire enterprise support of Apache Sling as part of AEM or more probably on the extra functionalities provided by AEM, as workflows and, of course, Sites, Form and Assets management.
Using Apache Sling as a CSP provides many benefits, for the system integrators that work on this technology and for the customers as well. When I was developing the Protocollo Informatico with my colleagues I immediately realized that this is a very easy way to learn the basics of Adobe AEM back-end development. The developer in fact learns to configure, to manage, custom node types, security, JCR indexes in addition to implementing custom Sling servlets, JCR observation, transaction management, etc. In my experience many Adobe AEM developers do not know that they can leverage these features. In the same cases, they do not consider security as an issue because they think that AEM protects all data auto-magically. In the same way, developers do not even know that they could add indexes to improve performances. Even if the developers are not using a feature, it is always good to know that there are options available because one of these could be useful in the future, to better protect or to find bottlenecks in the data layer. For these reasons I approach every request to implement content management applications using Apache Sling or Adobe AEM. This is what we are doing at Next 2U Consulting: we are using Apache Sling for every new service and every new product that needs content management functionalities. These days we are releasing a new application completely based on Apache Sling 12 and that will be used in hospitals by doctors and nurses during specialized medical examinations.
The future of Apache Sling and Apache Jackrabbit OAK
The Apache Sling and Apache Jackrabbit OAK projects are run by super good developers, but it is not always easy to juggle so much code and different releases. For Apache Sling, a single JAR file that includes binaries for all OSGI bundles defined within the project is no longer available. Although this is an important strength for the Sling project, modular by definition, it is not always easy to juggle the different released bundles. At a lower level, Apache Jackrabbit does a great job, but it cannot be said that this powerful content management systems is an innovative product today. Although the Apache Jackrabbit OAK fork is thought, and succeeds, in providing the best performance, the functionalities provided are essentially the same as they were decades ago. It is true that Jackrabbit is the reference design of a standard (JSR 170 and JSR 283) but it is also true that adhering to standards sometimes means being forced to remain the same.
The hierarchical, tree-based view of content management is now too old, and a more free-form, graph-based view is increasingly needed for information management. In this regard, graph databases are increasingly taking over the market, and I expect that one day, hopefully soon, CSPs will all use a graph database. I firmly believe this, and that is why I accepted a job position for one of the most interesting graph database vendors on the market, Ultipa.
Adobe AEM one day was a leader in the CSPs space. In the 2006 Magic Quadrant, Gartner positioned Day Software, the company acquired by Adobe, in the Visionaries / Leaders area. Then, in 2012 Gartner removed Adobe from the CSPs Magic Quadrant because, has reported in the Gartner document, Adobe, “has shifted its focus to WCM, customer engagement and digital marketing. We have not seen Adobe actively developing, promoting, or selling enough of the other components of ECM to warrant consideration in this Magic Quadrant".Gartner Magic Quadrant, for Enterprise Content Management, 2006.
That is correct: Adobe has focused all its interests into the very lucrative digital marketing area but that does not mean that today Adobe AEM is not a valid CSP. Moreover, Adobe has complementary products like Adobe PDF Services, Adobe Sign, Adobe Document Cloud, Adobe Workfront that could add new functionalities to its Adobe AEM platform. Other Adobe products and services could add newer value or life to CSP based applications: let’s think about Adobe Analytics; this technology can be used not just to better understand customer behaviors when buying something in a web site but also to better understand employees behaviors, because also employees deserve better applications and constantly improved services!
Is AEM a perfect CSP? The answer is “no”: AEM is super powerful considering its target but just considering AEM as a CSP, would need a more modern tool to manage node types or would need of some functionalities that other CSPs offer, like for example the Document Lifecycle, an historical and useful functionality offered by Opentext Documentum.
If Adobe also aimed to sell AEM as a content services platform, it would gain a new and thriving source of revenue, considering that many customers are reevaluating investments made on legacy CSPs. Who knows maybe one day there will be a new application, I would ask that AEM Documents, in addition to AEM Sites, AEM Forms, and AEM Assets.
Adobe AEM Documents does not exist! Maybe in the future! What do you think about it?
Considering all, I think Adobe can play a unique role in the CSPs space and should be considered, again, a leader in this sector, even if independent analysts like Gartner do not consider this fantastic brand in their benchmarks.
About the author
Yuri Simione, has more than 25 years of experience in IT. He is partner of Next 2U Consulting, a little Italian company focused on content management for some, direct, large companies. Yuri is also Sales Manager, EMEA at Ultipa, a graph database vendor based in San Ramon, California. Yuri is one of the eighteen specialists selected by Adobe for its inaugural Adobe AEM Champion program. Yuri created and manages a Linkedin Group on Adobe AEM, with more than 11k members, the largest independent community of AEM developers and consultants, on Linkedin. You can follow Yuri on Linkedin and on Twitter.
Please use this thread to ask questions relating to this article