By Guest Blogger Jeroen Reijn, Lead Architect, Hippo Professional Services

Screen Shot 2015-08-25 at 12.05.51 PM

Perhaps you have heard about Hippo CMS, an enterprise Open Source Java-based Content Management System (CMS). Actually, Hippo CMS is a platform that offers much more than web publishing capabilities. Our focus on large volumes of content also explains why Hippo CMS is actively used primarily within medium to large organizations. These larger firms often have a Digital Asset Management system alongside their Web Content Management (WCM) system, and in most cases, the CMS is required to work with digital assets stored within the DAM.

WCM systems often provides basic to medium DAM capabilities, but powerful, enterprise DAM systems, such as the Nuxeo Platform, give you all advanced management capabilities you need for your digital assets, such as asset rights management, validation, lifecycle management, automated rendition, and syndication management for media files. Usually, the DAM system stores these assets in a central repository enabling you to share them between several external systems, not just your WCM solution.

We recently integrated Hippo CMS and the Nuxeo Platform for a customer. The customer wanted us to prove that combining Hippo and Nuxeo would be a killer combination - and we did! The digital media stored in the Nuxeo Platform will help drive and improve the customer’s overall online experience.

The requirements were pretty straightforward. The customer’s editorial and marketing staff needed to leverage existing content in the Nuxeo Platform and deliver that in the most optimal way to the web. A more concrete example is shown below.

Screenshot of a Hippo CMS based page displaying references to files stored in the Nuxeo Platform.Screenshot of a Hippo CMS based page displaying references to files stored in the Nuxeo Platform.

The customer wanted to add to its product detail pages a list of manuals and documents related to that specific product. The manuals and other documents resided in the Nuxeo Platform and the editors wanted to quickly use the existing content, without needlessly duplicating and copying the content over to Hippo CMS.

Connecting Hippo CMS and Nuxeo DAM

To connect Hippo and the Nuxeo Platform, we used the existing External Content Picker plugin, a plugin available from the Hippo Forge. The external Content Picker allows editors to browse and search a remote content repository. Once the right content is found, the editor can select it and in the background the unique ID of the remote item (e.g., something like ”c5e890d3-87f5-42cb-abe4-1ed9d0d2600c”) will be stored inside the content in Hippo CMS. The plugin also allows you to copy over additional information, which in turn could be leveraged by the CMS or website to display additional information about the item.

To keep the External Content Picker a generic plugin, it allows you to specify your own external document service class. This service will communicate with the backend and make sure that the CMS user can select and search content within the Nuxeo platform. While implementing the service there are some key points to think about:

  1. Which connection method do we take to connect both the systems? We could use either REST or CMIS.
  2. How will we handle authentication and authorization from within the CMS on the content in the Nuxeo Platform?

For the connection, we chose to connect via the Nuxeo Automation API (REST), which was really straightforward with the Java Automation Client. We could have chosen the CMIS connector, but the Automation Client would allow us to do a much more powerful integration.

Our second challenge was to implement the connection in such a way that it would take the correct permissions and authentication into account. We wanted this to be both simple and secure. For this to work the CMS editors were only able to select images and assets which are also publicly accessible by people visiting the website. The simplest solution for this was to create a dedicated Hippo user in the Nuxeo Platform with restricted read access. This user was only allowed to search and retrieve information stored within the Nuxeo Platform for items that were in a ‘published’ state.

Now from the CMS user perspective this should all feel like one single system, so the UI needed to be simple yet flexible enough to do what’s needed to get to the content. Luckily the External Content Picker plugin handles this for us. It comes with a default dialog for previews, search and has multiselect capabilities.

Screenshot of a Hippo CMS content entry form, with the dialog for searching and browsing files located within the Nuxeo Platform.Screenshot of a Hippo CMS content entry form, with the dialog for searching and browsing files located within the Nuxeo Platform.

In case of a search, the plugin just performs a query through the Automation Client and returns only the minimal required information about the items and tries to get a preview or rendition of the item if it’s available.

To get a better understanding of how it all works together, here is a diagram with the high-level overview of the solution.

Nuxeo DAM - Hippo CMS IntegrationNuxeo DAM - Hippo CMS Integration

As you can see, it’s pretty straightforward and extremely powerful. Now within the Hippo site application, the display of information from the Nuxeo Platform is handled within a Hippo component or via a component template. Both options use the Java Automation Client to fetch the actual content from the Nuxeo platform. A visitor to the website will not even notice that the actual content is coming from the Nuxeo Platform because everything is handled from within the components in Hippo.

Now if you combine this with Hippo’s personalisation and content relevance module, you have an extremely powerful combination at hand, which would allow you to excel when it comes to delivering real customer experiences.

Nuxeo DAM and Hippo CMS: What’s next…

As we just saw, integrating content from the Nuxeo Platform into a Hippo CMS base site is incredibly easy. There are many more interesting areas in which both products can be integrated and we will discuss them soon!

Unfortunately, the code for the connection is not yet publicly available. But in case you’re interested, do leave a comment or give me a shout on Twitter and I’ll see what I can do.