Optaros, in conjunction with Acquia and Alfresco, has made available a set of Drupal modules that integrates the popular community platform, Drupal, with the leading open source content management repository, Alfresco. We’ve released the integration as two modules. The first, simply called CMIS API, is a module that knows how to make RESTful CMIS calls to any CMIS-compliant repository and provides Drupal developers with a set of functions to execute those calls. There is nothing vendor-specific in the CMIS API module–it’s all based on the proposed Content Management Interoperability Services (CMIS) spec.
To do something useful, you need a CMIS-compliant repository. Alfresco was the first vendor to supply a production-ready CMIS implementation (open source or otherwise). If you’ve got Alfresco (Enterprise or Labs) you’ve got a CMIS-compliant repository that will work great with Drupal.
CMIS implementations will have some functions that are specific to each vendor. For example, how authentication is handled is currently vendor-specific. So, we put all of that code in the CMIS Alfresco module. As more and more repositories roll out their CMIS implementations you’ll be able to retrieve content from those as well. So the CMIS API module requires one or more CMIS implementation modules, and currently, the CMIS Alfresco module is the only one that exists. As additional repositories become CMIS compliant and people develop implementation modules for those repositories, they’ll snap right in.
When you put Drupal and Alfresco together, you have something powerful: All of the community features of a Drupal site plus all of the rich content management features of an Alfresco repository. Specifically, this integration allows you to do things like:
- Retrieve content from the repository
- Navigate the repository
- Execute CMIS CQL queries against the repository. (We’ve also added an Open Search query capability provided by the Alfresco module).
- Synchronize nodes between Drupal and the repository (two-way)
So, for example, you could have a story start out in Drupal and then get routed through Alfresco’s workflow engine. Or, you might have content authors contributing content to Alfresco through CIFS (windows file share) that ultimately makes its way to the Drupal site as blog nodes.
It was important to us that this integration be meaningful: We didn’t want to simply provide a read-only “window” into the Alfresco repository. And, we didn’t want to do anything that would prevent the thousands of available Drupal modules from working with content that may have come from Alfresco. (Yes, there are some limitations we imposed on ourselves just in the interest of controlling scope–we’ll address those over time. The point is, we want to leverage the full strength of both platforms, otherwise, what’s the point?)
Why did we do this?
First, we do a lot of work with both Alfresco and Drupal and clients often ask about making them work together. So, clearly this is something people are interested in. But there’s a bigger picture here…
In most organizations, people have more than one content repository and multiple web site technologies. As some people learn the hard way, issuing a top-down edict from IT that dictates the technologies the business must use to build content-centric web apps rarely makes sense. The promise of CMIS is to break the tight coupling between content repositories and the front-end. If every repository in your organization were CMIS enabled, and if every front-end technology could get content out of any CMIS-enabled repository through a simple API call, it wouldn’t matter where your content was stored or what front-end technology you wanted to use to get to it. This integration is one step toward that interoperable, open, “content as a service” ideal.
Try it out!
So download the module, install it into your Drupal site, then configure the module to point to your Alfresco repository. The modules install like any other Drupal module and nothing is required on the Alfresco repository side–we’re using out-of-the-box CMIS for everything. Play with it and let us know what you think. It’s still very early (both from the perspective of this specific integration and CMIS, in general) and there’s plenty of work left to be done. We’ve got a high level roadmap for the modules on Drupal.org–if something is missing that you feel strongly about, let us know (or code it up!).

