Drupal + Alfresco - A Next Gen Content Strategy

Why Drupal & Alfresco?

Organizations are using Enterprise Content Management (ECM) to manage their digital content. ECM is used to manage traditional documents like: word, excel, ppt and pdfs that are created with complex workflows. ECM is popular in the Financial Services, Medical Services, Manufacturing, Government and Publishing. ECM brings with it storage, versioning, workflows and highly customizable metadata models. Some of the popular ECMs include: DocuShare, OnBase by Hyland, Laserfiche, SpringCM Contract Management, Seismic, Lexmark Enterprise Software, Nuxeo, Oracle WebCenter Content, IBM FileNet Content Manager, Alfresco . Amongst these Alfresco is available as an Open Source Solution.

Today the content has evolved, over and above the traditional form of content - words, excels, pdf and presentations, we generate a large no of Dynamic HTML content, VIDEOS, PODCASTS, INFOGRAPHICS, etc. Also content no longer stands alone, the end-users/customers can interact with the content using features like commenting, rating, sharing tools, etc. Today the content is Multimedia and Collaborative. To provide for this new content, Organizations will need a Web Content Management System (WCM) like Drupal.

Drupal with it’s Web Content Management capabilities and Integration Capabilities, helps both WCM and ECM to coexist. Integrating Drupal with Alfresco would help Companies to leverage the best aspects of WCM and ECM, to build a robust unified Content Management System. Drupal also brings with it enhanced, responsive user interface capabilities.

Some of the key Benefits of using Drupal are:

  1. Speed to Market - Faster Publishing of content
  2. Customer Experience Improvements by bringing a Uniform, Consistent Experience across the Different Channels - Responsive design & Omni channel publishing
  3. Personalization Capabilities, Targeted Marketing and Marketing Automation
  4. Operational Efficiencies by bringing technologies that would assist in facilitating content publishing with minimal or zero support from technical team - eg. Content Management Tools & Experience for Editors with In Context Editing & WYSIWYG Capabilities, Layout Management & more.
  5. Process Improvement by bringing in workflows and version control for Business approvals/compliance
  6. Integration Capabilities - RESTful APIs Support
  7. Social Media Tools & Search Engine Optimization
  8. Support for Analytics tools include Google Analytics
  9. Use of single code base to manage multiple platforms to simplify management of code base
  10. Multi Lingual Capabilities
  11. E Commerce Capabilities

About Alfresco

Alfresco is an architecture that combines ECM (Enterprise Content Management) and BPM (Business Process Management) solutions on cloud. Alfresco is a powerful open platform that is easy to extend, customize and integrate with existing applications. The ECM tools provides easy mobile access to content, delivers a simple but rich collaboration user experience. The BPM tools of Alfresco allow organizations to manage a wide range of critical business processes. In short, Alfresco reduces the complexity of document handling, improving time and process efficiency and enhancing user productivity. It is developed on Java framework.

Users of Alfresco

Alfresco is used in industries like

Financial Services - DAB Bank, MSIG Insurance

Health Care - Imperial College, Liverpool Women's NHS Foundation Trust

Government - NASA Langley Research Center, Denver - The Mile High City

Manufacturing - CISCO, Estrella Galicia

Publishing - Oxford University Press, Taylor & Francis

Education - Royal Australasian College of Physicians, The (RACP), Macquarie University

Drawbacks of Alfresco

  1. Content Publishing between systems needs Manual Intervention
  2. Web Content managed interfaces lack inline editing or WYSIWYG capabilities
  3. Missing Taxonomy/Categorization tools
  4. Lacking several support resources including FAQs and live chat
  5. Standardized document templates
  6. Limited Customization of User Interface

How to Integrate Drupal & Alfresco?

Drupal can be integrated with Alfresco using the CMIS API project. The CMIS API Project aims to provide a generic API for integrating with CMIS compliant Enterprise CMS (ECM) systems.

What is CMIS - Content Management interoperability Service ?

Content Management Interoperability Services (CMIS) is an open standard that allows different Content Management Systems to inter-operate over the Internet. Specifically, CMIS defines an abstraction layer for controlling diverse document management systems and repositories using web protocols.

1.png

Authenticating using CMIS standard

Authenticating CMIS doesn’t actually dictate how authentication happens other than to say it is up to the underlying protocol to handle the authentication. In Alfresco, you have a couple of options: pass a ticket as an argument or use basic authentication

Option 1: Pass a ticket You can do a GET against the login URL (non-CMIS) and Alfresco will return a ticket. You’ll need to include the ticket in subsequent calls against the server.

Option 2: Basic Authentication The second option is to take advantage of HTTP Basic Authentication and curl knows how to do that. To use this option, just pass the username and password as an argument to curl.

Drupal CMIS Module

“The CMIS API package of modules provide an API for connecting to any CMIS compliant systems to bi-directionally synchronize content between the CMIS ECM system and Drupal. In addition to the API, this package provides a range of basic functionality for creating, updating, browsing and searching content in the CMIS ECM system via the Drupal interface. The overall goal of the modules is to provide an easy-to-use, WCM front-end in Drupal for ECM systems that are often unfamiliar to web content managers.”

2.png

The module provides basic interfaces and functionality out of the box. The module also provides hooks and functions that could be used to extend for advanced integrations.

Drupal would help provide web content managers an interface to easily add documents to sites, while continuing to use the advanced workflow or security provided by Alfresco for document management. The Below image summarizes the functionality provided by Drupal CMIS module.

3.png

SSO between Drupal and Alfresco

CMIS Headerswing Settings - The CMIS Header swing module provides a mechanism for relaying (or "swinging") HTTP header data from Drupal to the CMIS repository. This is particularly useful for passing user authentication information from Drupal to the CMIS repository, providing Single Sign-On (SSO), when authentication is managed by a third party component that populates $_SERVER vars with credentials, such as HTTP Basic or NTLM.

Re requisites - PHP cURL

Steps for Repository Configuration

Enable `cmis`, `cmis_common`, `cmis_browser` and `cmis_query` modules. Add the following code in Drupal settings file. 
$conf['cmis_repositories'] = array(
  'default' => array(
    'user' => '<cmis_user_username>',
    'password' => '<cmis_user_password>',
    'url' => 'http://path/to/cmis/interface'
  )

Settings

User : Generic username used by cmis_common to authenticate Drupal to the CMIS repository. optional: used by cmis_common.

Password : Generic password used by cmis_common to authenticate Drupal to the CMIS repository optional: used by cmis_common.

URL : CMIS repository end point URL. Mandatory : Used by cmis_common.

Drupal-CMIS synchronization

Enable cmis_sync module and cmis_repositories config var is set. Add the following lines to your settings file:
$conf['cmis_sync_map'] = array(
  'page' => array(
    'enabled' => TRUE,
    'cmis_folderPath' => '/SomePath'
  ),
'custom_drupal_content_type' => array(
    'enabled' => TRUE,
    'cmis_folderPath' => '/SomeOtherPath'
'fields' => array(
'title' => 'cmis:name',
'custom_field' => 'cmis:otherCustomProperty',
array('drupal' => 'some_other_custom_field', 'cmis' => 'cmis:someOtherCustomProperty', 'cmis to drupal' => TRUE, 'drupal to cmis' => TRUE))
),
);
 

This will enable the synchronization process which will sync drupal nodes of type page to cmis:document cmis objects under /SomePath folder. For each created/updated node, sync process will create/update a cmis object under cmis_folderPath by mapping $node->title to cmis:name and $node->body to cmis object's content stream. 

For more details refer to the CMIS Module README.txt file.

Reference:- https://www.drupal.org/project/cmis