The official documentation is at: http://docs.alfresco.com
IMPORTANT NOTE: This page is a work in progress. Please refer to the main Alfresco CMIS page for information
Content Management Interoperability Services (CMIS) is a specification that defines how Enterprise Content Management (ECM) systems exchange content. ECM implementations today have proprietary APIs and query interfaces. Typically, those APIs are language-dependent, which makes it difficult to work across multiple ECM applications or to make them interoperate. The CMIS specification aims to bridge the gap between multiple ECM solutions within organizations by allowing application developers to access the repositories using an application and platform independent method.
The stated CMIS objective is to:
'define a domain model and set of bindings, such as Web Service and RESTful AtomPub that can be used by applications to work with one or more Content Management repositories/systems'.
By delivering platform independence, CMIS promises to be as important for the ECM industry as SQL in the database industry.
On September 10, 2008, Enterprise Content Management vendors EMC Corporation, IBM Corporation, and Microsoft Corporation announced the publication of Content Management Interoperability Services (CMIS), distributed as a ZIP archive with four prose documents and a collection of schemas, WSDLs, and XML instances.
On the same day, Alfresco announced the availability of the first implementation of the draft CMIS Specification.
On October 06, 2008, OASIS issued a public call for participation in a new technical committee chartered to define specifications for use of Web services and Web 2.0 interfaces to enable information sharing across content management repositories from different vendors. The OASIS CMIS TC works 'to standardize a Web services interface specification that will enable greater interoperability of Enterprise Content Management (ECM) systems. CMIS uses Web services and Web 2.0 interfaces to enable rich information to be shared across Internet protocols in vendor-neutral formats, among document systems, publishers and repositories, within one enterprise and between companies.'
Alfresco is a CMIS Technical Committee participant. Alfresco has provided its draft CMIS implementation to foster discussion, to provide a learning tool to gain hands-on experience, and to ensure a robust, implemented specification.
As a contributing member of the draft technical specification, Alfresco is committed to growing the CMIS Community and being the leading Open Source CMIS member, driving development, discussion, and adoption of both CMIS and CMIS best practices.
Although the CMIS specification is still in a draft state, several initiatives are underway to implement both CMIS providers and clients.
CMIS defines a common domain model for content management repositories. It covers common types and allows for extending those types with additional properties and creating relationships between the types.
The Data model allows for the discovery of defined custom content types. Note that CMIS does not specify how to define content - that is repository-specific.
CMIS addresses a common set of content services. CMIS doesn't define all the
common services vendors might possibly implement, but it looks at broadly accepted services most
content applications require and most content repositories provide, such as check-in/check-out,
versioning, and others. Importantly, CMIS also provides a capability to discover which services a
particular repository supports.
CMIS defines a set of protocol bindings to interact with the model. This allows
application developers to connect to the model and invoke some of the services. Initial protocol
bindings detailed in the specification are the AtomPub binding for REST-style (HTTP and URL interaction) and the SOAP binding for Web Services.
CMIS has a standardized query language based on SQL and adding its own extensions for content management including:
This query language is very powerful because it offers a standard way of finding and querying information
which will allow application vendors to run against any CMIS-compliant repository without having to
make any changes to their code.
Alfresco's draft CMIS implementation is available as part of Alfresco Community. This allows developers to gain hands-on experience with the specification as a CMIS provider or client.
The draft CMIS implementation provides:
The following architectural diagram represents the CMIS implementation with Alfresco:
When installed and started, the Alfresco Repository URI http://<host>:<port>/alfresco/service/api/cmis.html provides access to the Alfresco Draft CMIS Implementation, including reference documentation for the RESTful AtomPub binding, test harnesses and Web Service WSDL.
Alfresco Labs (HEAD svn) currently supports the CMIS v0.61 specification.
The Alfresco Content Repository provides the CMIS RESTful AtomPub v0.61 binding, an extension of the Atom Publishing Protocol. All CMIS RESTful AtomPub services are implemented as Alfresco Web Scripts and support all Web Script capabilities such as authentication, content negotiation, and tunneling.
The Alfresco Content Repository provides the CMIS Web Services v0.61 binding.
The Alfresco content repository is mapped to the CMIS technical specification as follows:
Note: This means any type outside the cm:content and cm:folder hierarchy is not exposed via the CMIS interface.
The Alfresco test harness exercises the CMIS RESTful AtomPub binding. It's available in the following flavors:
By default, the test executes against the Alfresco Draft CMIS Implementation. However, you can test any CMIS RESTful AtomPub binding provider by adjusting one or more of the following settings:
The test harness also doubles as a set of Java CMIS client samples:
Example of test harness as a web page:
none|550px|Alfresco CMIS Unit Tests
The first part of the CMIS specification provides a definition of a standard query language for
CMIS. The query language is a form of SQL, which means the specification provides a mapping
between the domain model and the relational view of the model. This allows the CMIS repository to
be exposed as a relational database. Each object that can be queried is mapped as a relational type
or a virtual table.
The CMIS Query Language is a subset of SQL-92, with some extensions specific to the content
management world. These extensions include:
These can be combined with traditional attribute search.
All capabilities of CMIS SQL are supported (except join between Types). The Alfresco FTS language may be embedded in the CMIS SQL contains() predicate.
Alfresco Aspects may also be queried as if they were tables and joined to Types by ObjectId.
SELECT D.*, O.* FROM DOCUMENT AS D JOIN CM_OWNABLE AS O ON (D.ObjectId = O.ObjectId)
This query finds documents containing the text string 'Caribbean Central America Cruise Tour' picking out any DepartureDates (multi-value property) after January 1st 2010. It also sorts based on relevance of the search.
SELECT ObjectId, SCORE() AS Relevance, Destination, DepartureDates
WHERE CONTAINS( FCARIBBEAN CENTRAL AMERICA CRUISE TOUR5 )
The content stream is not part of the SQL specification and cannot be returned through
querying as other services handle retrieving the content. Additionally, there are some optional
repository specific capabilities which can be discovered, such as the level of search support, and inner
and left outer joins support, among others.
Apache Abdera is an implementation of the Atom Syndication Format (RFC 4287) and Atom Publishing Protocol (RFC 5023) specifications. The CMIS REST API binding is an extension of the Atom Publishing Protocol. Therefore, Apache Abdera may be used as a client library to any CMIS REST provider.
To support the custom CMIS schema, the Alfresco Draft Implementation provides a CMIS extension to Apache Abdera.
The CMIS Joomla-Alfresco Integration project provides a mechanism to achieve the benefits of Alfresco and Joomla working together through a standards-compliant interface.
The following is an example of a Joomla! Site with an Alfresco module.
Test the CMIS Joomla-Alfresco Demo yourself. Guest Login is demo/demo.
The CMIS Drupal-Alfresco Integration project provides a mechanism to achieve the benefits of Alfresco and Drupal working together through a standards-compliant interface.
The following is an example of how Drupal can act as a CMIS client to Alfresco.
Test the CMIS Drupal-Alfresco Integration Module yourself. Guest Login is demo/demo.
1. What is CMIS?
2. What problem does CMIS address?
3. What functionality does CMIS address?
4. How does CMIS relate to other standards?
5. Which vendors are involved in CMIS and how long have they been working on the Draft Specification?
6. What will be the impact of CMIS on the ECM market?
7. Why CMIS?
8. How do I get access to the Draft Specification and what is the OASIS process?
9. How can I start developing against the CMIS API today to prepare for tomorrow?
10. How can I participate and comment on the Specification?
Alfresco CMIS Developer Toolbox:
To encourage developers to learn, explore and prototype CMIS, we've assembled the following collection of resources in the Content Community:
Alfresco CMIS materials:
EMC, IBM & Microsoft:
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.