Posts tagged "cmis"

OpenWGA 5.2 Adds Support for CMIS, Social Media

OpenWGA (newssite) went open source a couple of months ago, but the updates haven't slowed down. With its latest release (5.2), you now have support for CMIS and social media.

OpenWGA is a 100% Java CMS by the German company Innovation Gate Gmbh. OpenWGA is a relatively new addition to the open source family of Enterprise CMS but it is a veteran in the content management market. They offer enterprise-level features and probably their dual-licensing scheme (i.e. open source and free is just a part of it, while the more valuable features are in the paid commercial license) is one of the reasons why they are not as popular as many other enterprise-level content management systems. OpenWGA doesn't lack features and appeal as this latest release demonstrates.

There are many new features in OpenWGA 5.2, the most notable being the included support for CMIS, new social plugins, video streaming and the new editor scheme in the Developer Studio.

CMIS as a Client and a Server

The support for CMIS is one of the major features in this release because CMIS is such a hot topic. CMIS support means that as a client, OpenWGA can access content in any CMIS repository (i.e. Alfresco) and display the content within an OpenWGA site/portal. As a CMIS server, OpenWGA will be able to provide access to the contents within the OpenWGA repository to any CMIS-enabled client.

The bad news is that CMIS-functionality is available only for the paid (i.e. Enterprise) version, so if you are running the free version, you won't be able to use CMIS.

New Social Plugins

The new social plugins are the latest improvement in OpenWGA and unlike the CMIS functionality, they are free Enterprise 2.0 plugins. The plugins are OpenWGA Wikis, OpenWGA Blogs, OpenWGA Forums and OpenWGA Photos. All of them can either be used as stand alone applications or can be integrated into other web projects.

Maybe these features appeared a bit late because many other Web and Enterprise CMS have them since the beginning of time but having in mind that OpenWGA isn't Drupal or WordPress and it doesn't have a huge community of developers, the delay is easy to understand.

Video Streaming

Video content is frequently to be found on an CMS and this is why it is good if the CMS is able to stream videos. The tricky part with streaming videos is that they require the so called “accept ranges” (an HTTP technology that chunks the video in portions, so that the browser can download a portion and play it rather than download the whole movie at once, which with huge movies and/or slow connections might take ages). Now OpenWGA 5.2. includes such support for video streaming.

A New Editor Scheme in the Developer Studio

Schemas have always been part of application design and they make the whole process much easier. Starting with OpenWGA 5.2, you will be able to use schemes. You can use predefined content type settings, content items, language definitions and website areas. All this functionality is included in the free OpenWGA Developer Studio.

These new feature additions make OpenWGA a good choice, especially if you are obsessed with programming languages and wouldn't trade Java for PHP, Perl or .NET.

5 Things to Consider when Integrating your Content Management System and Portal

Portals and content management systems are widely used in organizations today. For many, the desire to integrate them into a single collaborative environment is critical. But there's a lot to think about before moving forward. In this article we cover the basic considerations for integrating a CMS into an enterprise portal.

A Use Case for Integration

Collaboration is no longer just a buzz word; it is now an enterprise need. Some enterprises have already started seeing the benefits of collaborative work environments. They know that content management plays a very important and crucial role in building a successful collaboration environment by improving processes, increasing employee efficiency and productivity, and lowering costs.

A typical business use case around how content lifecycle plays a role in a collaboration environment would be:

  • A user logs in enterprise one stop portal
  • They create and manage content (check-in, check-out, update metadata, tag)
  • They then share the same content via Wikis, Blogs, Message Boards, Discussion Forums, etc…
  • In some cases they may submit content for formal review and approval via some workflow
  • They may also comment and/or rate other content
  • When they have finished, they log out of the portal

Today almost every Content Management System offers its own user interface that integrates content management and community/collaboration features. WebTop, damTop and CenterStage are examples of collaborative tools for EMC Documentum; Alfresco Share an example for Alfresco.

While these may be feature rich interfaces, an enterprise may not want to add another collaboration tool outside of their portal for managing content. The challenge then becomes how to enable content management capabilities via a one stop enterprise portal.

Integrating a CMS repository with a portal solution provides the following benefits:

  • Create, manage and most importantly collaborate on content within and across the community from a single stop enterprise portal enabling collaboration across the organization.
  • Effectively utilize social collaboration tools — wikis, blogs, message boards — from the portal framework by attaching content that is already created and managed within the CMS Repository.
  • Take advantage of better governance, security and compliance policies (retention etc) for their content. People and communities can collaborate and share content based on standard rules .
There are several key architecture and design decisions that need to be evaluated to come up with a robust integration solution between your content management system and your portal:
  1. Define the business specific coarse-grained CMS service to be consumed by portal service
  2. Evaluate and decide on the technology option to implement and host the CMS service
  3. Evaluate and decide on the technology option for writing portlets for content management
  4. Decide the option/strategy on SSO (Single Sign-on)/Authentication from the Portal to the CMS
  5. Define the strategy for Community, security/authorization management

1. Define the business specific coarse-grained service to be consumed by portal layer

Almost all Content Management providers expose their services as web services that can be consumed from any client application (like a portal). But these services tend to be atomic in nature with the lowest granularity. As a result, business specific custom reusable composite services may need to be designed that will call these atomic services.

2. Evaluate & decide on the technology option to implement & host the CMS service

There are multiple technology options to implement the CMS Service:


Content Management Interoperability Services (CMIS) is a technical specification for integrating with a ECM (Enterprise Content Management) repository via Web Services. It is a language-independent, repository-independent API for content management. The objective of the CMIS standard is to define a common content management web services interface that can be implemented by a content repository vendor, enabling service interoperability across repositories through standard SOAP and Restful Bindings.

This might be the best option to go with for implementing the common reusable services for any portal or third party integration. The back-end repository can be changed at any time without design and code rework on the front-end system.

CMIS Version 1.0 is just out for public review. Though the vendors have started building their CMIS implementations based on the draft spec, it may not be mature enough and production ready very soon. However, enterprises can start using vendor provided draft implementations for non-critical business applications.

It is important to note that CMIS will enable only standard content management capability. Most content management systems have more rich functionality; functionality that, if required by the enterprise, will require additional custom development.


Most Content Management Vendors expose repository capabilities as standard SOAP-based Web Services. This might be another good choice to use as integration strategy. The downfall is that the enterprise will be locked down to a specific vendor.


Some vendors also provide the repository capabilities as REST services. REST is lightweight and simple to use. However, sometimes it is not a good idea to send large amounts of data/content via uri. Like other REST Services, transaction and security management might be harder for a large enterprise implementation. And once again, the enterprise will be locked down to a specific vendor. 

The OOTB/Custom services can be deployed in standard Application Server Container (like JBoss, Oracle, WebSphere, Tomcat, etc…) or any Enterprise Service Bus. Services can be made available via a standard SOA (service oriented architecture) registry taking advantage the company’s existing standard SOA governance model.

The appropriate Web Service client must be generated from the service WSDL via JAX-WS or Axis, or some other tool. This would be consumed from Portlet Service.


3. Evaluate & decide on the technology option for writing the content management portlet

A Portlet Action and Service needs to be designed to call the underlying CMIS, CMS Web Service or REST service. In many cases an enterprise may already have a portal platform, so content management features will need to be enabled for that portal.

Here are a couple of ways to do this:

Vendor Supplier Portlets

Some CMS vendors provide a JSR portlet, but it may or may not match what the enterprise is looking for from a collaboration perspective. It’s not as simple as taking the vendor provided portlet and dropping it into the portal platform. Aside from usability and functionality, authentication, security, transaction and other features need to be aligned with enterprise’s strategy. In most cases some work need to be done.

Write Your Own

An enterprise can decide to go ahead and write its own portlet to meet the business need. There are multiple choices to write a portlet :

  • Pure JSR 168/286 Portlet (with JSR Tags)
  • Struts Portlet (JSR 168/286 compliant)
  • Struts Portlet using Container Provider/Vendor API
  • JSF Portlet (JSR 168/286 compliant)
  • JSF Portlet using container Provider/Vendor API)

The JSF or Struts framework have their own strengths. You should design and develop JSR compliant portlets. The portlets should not be tied with the CMS vendor’s specific APIs so you don't loose portability. Pure JSR portlets might be the best choice, but JSR Complaint Struts portlets or JSR compliant JSF Portlets might be used as well.


4. Decide the strategy on SSO/Authentication from Portal to CMS

User sessions need to be created in the CMS repository to do any kind of CMS related operation. If the portal solution is already integrated with an SSO infrastructure (OAM, Netegrity, etc…), this will be easier to do. The SSO Provider can generate the token, and that token can be passed and used to create a session for CMS related operations. A plug-in may need to be written in the content management system to authenticate the SSO token (if a plug-in is not already available for the specific SSO provider).

If the portal solution is not integrated with an SSO Provider, the named user Authentication approach can be followed. A generic userid/password combination is stored in the service code and the CMS session can be established using this generic id when required. This generic user is going to run all the services on behalf of other users. The SAML standard also can be used to establish a CMS session.



5. Find the strategy on Community, security/authorization management

There are portal solutions — such as Liferay — available today that come with built in community concepts. Also any enterprise can build community capabilities within the enterprise portal. And most content management system also offer collaboration services and features. There are a few choices available to bridge the gap:

  • Have the portal be the single source of truth for community. So the community and its governance, security, creation, modification and deletion capabilities would be propagated to the CMS real time via the portal.
  • In cases where the portal will not be the single point of entry for the content management system, community capabilities and security would also need to be created and managed in the CMS. In that event, portal community and security information will need to be brought in sync.


Integrating a content management system with an enterprise portal solution is not trivial as it involves integration between different products. But a successful integration backed by a solid business goal and technical architecture can bring the business value right way and improve the overall organization performance many fold.


About the Author

Palash Ghosh is a BEA Certified Enterprise Architect, IBM Cerified OOAD & SOA Soln Designer and has more than 11 years of software architecting, designing, management experience working with the global fortune 100 companies focusing on providing business and technology solutions across diverse range of technologies. He is currently leading multiple initiative(s) in ECM, Portal, Collaboration & SOA/BPM space for fortune 100 Companies. His current interests include SOA, cloud computing.

Apache Chemistry Gains New Contributors via OpenCMIS

Just recently, we reported on Nuxeo’s (site) steady progress with Apache Chemistry, a Java implementation of the CMIS spec.

The newest development on this front is OpenCMIS (a project led by Alfresco, SAP and Open Text) that is adding their collection of libraries, frameworks and tools around CMIS to Apache Chemistry.

No, it is *not* an attack against Chemistry, but more of a friendly merger.

Recap on Apache Chemistry

Initiated by Day Software (see our interview with CTO David Nuescheler), Sourcesense and Nuxeo, Apache Chemistry started as a proposal for a new sandbox called ‘jcr-cmis’ in Apache Jackrabbit. Chemistry entered Apache incubation in April 2009.

Java-centric Apache Chemistry includes:

  • a high level API
  • a low level SPI
  • generic implementations of clients and servers for AtomPub and SOAP bindings
  • sample backends to serve data from repositories

Chemistry now targets CMIS 1.0 CD 05 draft, soon to be 06.

What is OpenCMIS and How the Two Come Together

OpenCMIS (dating back to summer 2009) is a community of folks employed by Alfresco, SAP and Open Text with the usual suspects as initial committers:

  • Florian Mueller (Open Text)
  • Jens Huebel (Open Text)
  • David Caruana (Alfresco)
  • David Ward (Alfresco)
  • Martin Hermes (SAP)
  • Stephan Klevenz (SAP)
  • Paul Goetz (SAP)

The goal of this CMIS implementation is to provide an enterprise-ready client library for Java that was missing in the existing CMIS prototypes, according to Open Text’s Florian Mueller.

Mueller describes the OpenCMIS architecture as follows, pointing out some differentiators between OpenCMIS and Chemistry:

  • There are two layers in OpenCMIS: the provider layer and the client layer.
  • The provider layer implements CMIS bindings. The opencmis-provider-api maps the CMIS domain model, handles immutable data objects (while chemistry-api follows an object-oriented approach)
  • The client layer, being on top of the provider layer, is a Java-like interface with all the classes and methods expected in an object-oriented interface
  • Chemistry uses Abdera to communicate with the server, and OpenCMIS is based on JAX-B and some CMIS-specific XML coding
  • OpenCMIS has a caching infrastructure that is specific to CMIS and OpenCMIS

As Muller notes, “The overall architecture and principals below the API are very, very different. Bringing both together would require philosophy changes on both sides. I'm not saying that this isn't possible, but it's a lengthy process.

Later on and more optimistically, Day’s Paolo Mottadelli describes in his blog OpenCMIS as “the last blast for Chemistry; the other big thing of the beginning of 2010,” as OpenCMIS joins Apache Chemistry with a request to merge the two codebases on the Apache Maven infrastructure. OpenCMIS, by the way, also uses other Apache products, such as Commons Codec and Commons Logging.

This merge is definitely an advancement in open source CMIS efforts on server and client sides, and covers different areas of the project, including:

  • Low level CMIS client library with support for AtomPub and Web Services bindings
  • High level CMIS client library sitting on top of the low level client with Java API (still in development)
  • CMIS server handling CMIS bindings on the server side and mapping them to a common set of Java interfaces
  • InMemory test repository for the CMIS server. A file system based test repository is under development and should be available soon
  • CMIS browser (currently, AtomPub only) for access to CMIS-enabled repositories

Nuescheler referred to OpenCMIS as “well architected and already very mature in its code base.” Even though CMIS is not even an official standard yet (the second round of public review ending today), and these two projects come from different backgrounds, this joint venture looks like a good approach to collaboration, improving the code and helping spring CMIS adoption into the masses.

xCMIS Fuels CMIS With Another Java Implementation

Following Apache Chemistry’s suit, another Java-based and open source implementation of the CMIS specification hit the streets. Meet xCMIS — a server side implementation of CMIS developed by eXo (site).

Currently in xCMIS 1.0 beta1, xCMIS supports eXo's Java Content Repository (JCR), third-party CMIS clients, new eXo CMIS client based on Google Web Toolkit (GWT), and an integration with the GateIn portal.

The implementation is done according to Content Management Interoperability Services (CMIS) version 1.0 draft 06 for REST AtomPub and Web Services (SOAP/WSDL) protocol bindings.

So far, the implementation (packaged as J2EE .war, or as an Apache Tomcat bundle) includes the following:

  • CMIS server
  • InMemory for testing purpose
  • Client for accessing CMIS-compliant repositories

eXo reports that it has tested their implementation with other CMIS clients, such as IBM CMIS Firefox Connector and CMIS Spaces Flex+AIR client.

Curious? Check out these resources: