CMIS4SharePoint¶
- CMIS4SharePoint
- IP-Tech to the forefront
- CMIS
- Known implementations of CMIS
- CMIS Servers
- CMIS Tools
- CMIS Clients
- Microsoft and CMIS
- SharePoint is falling behind
- CMIS4SharePoint
- Implementing CMIS4SharePoint
- Compliance with specification
- RoadMap
- Installing CMIS4sharePoint: Host a WCF service on SharePoint
- Example of consuming CMIS services
IP-Tech to the forefront¶
IP-Tech is a Tunisian booming software services provider. Founded by two senior engineers having ten years of experience each. They joined to them a highly qualified team working on major and challenging projects.
This increased IP-Tech notoriety and recognition among several customers while outsourcing their software development to a qualified and reliable offshore partner.
Aiming to distinguish itself from the competition, IP-Tech attaches great importance to technological and active participation within the community. IP-Tech was able to detect very early the important role that CMIS will play in the market of Enterprise Content Management (ECM).
So IP-Tech has decided to implement the first version of CMIS for the Microsoft SharePoint product. In this wiki you will find information necessary for understanding CMIS and particularly CMIS4SharePoint.
Business contacts
Tel. +216.70.93.77.73 - Fax +216.70.93.77.74
Postal address Tanit Center B2.42 - 2070 La Marsa, Tunisia.
Internet labs@iptech-offshore.com | http://www.iptech-offshore.com
CMIS¶
CMIS stands for "Content Management Interoperability Services". It is a draft standard established by the three biggest actors in the ECM industry:
Microsoft (with its SharePoint product), EMC (Documentum) and IBM (IBM Content Manager, IBM FileNet P8), which together represent the biggest part in the ECM market.
CMIS is being validated by the Organization for the Advancement of Structured Information Standards
The CMIS specification is now available under the public review version 1.0c .
CMIS was quickly supported by other ECM market players as: Alfresco, Oracle, Open Text, SAP, etc.
These players are currently the technical committee within OASIS.
The CMIS standard aims to provide a high-level layer of services, to ensure minimal interoperability between systems. It aims to provide just the essential, not a full API covering all the capabilities of ECM.
The purpose of CMIS is the result of a Forester study, this study provides, that it is common nowadays to find within the same company different content management systems. For example, the data service works on EMC Documentum, but other departments running with Microsoft SharePoint, this leads to a stack of incompatible products.
But companies today tend to use tools to centralize the information circulating within them (use of ERP and CRM, etc.) And the ECM are no exception to this rule. This led to the manufacture of "Ad-hoc” tools for information synthesis. These solutions are not reusable and a minor change in the architecture entails enormous expense. CMIS’s willing is to ensure minimal interoperability; its implementation will not result in major changes in the data model of the applications. The goals of CMIS are:
- Allow to build applications that target multiple ECM.
- Allow to build applications offering more advanced operations, based on all the web services provided by CMIS.
Known implementations of CMIS¶
The community was quickly interested in this standard and we found now many implementations and tools. This development will allow the committee to test ideas and to detect inconsistencies in the standard.
CMIS Servers¶
- Alfresco Draft CMIS Implementation
- Hosted Alfresco Draft CMIS Implementation (username / password = demo / demo) Alfresco CMIS Demo Site
- EMC Documentum
- IBM FileNet P8 Content Manager 4.0
- Sensenet
- Day Software
- KnowledgeTree
CMIS Tools¶
- Apache Chemistry
- CMIS FileShare by Florian Mueller
- NCMIS
- PHP CMIS API Client Module
- Flex CMIS Client API
- CMIS Spaces ActionScript
CMIS Clients¶
- CMIS Federated Search from AIIM iECM Demo
- Drupal CMIS Alfresco Module
- Joomla Integration
- Shane Johnson's Flex / AIR CMIS Browser
- Steve Reiner's CMIS Spaces
- Sten Andersons JavaFX Client
- Jan Pfitzner's Ext GWT Client
- Integrating External Document Repositories with SharePoint Server 2007
- Sensenet CMIS Client
- CMIS iPhone client
Microsoft and CMIS¶
Although one of the originators of CMIS and an editor of the original document, it is important to note the silence from Microsoft for possible implementation of CMIS. Microsoft has indeed announced its participation in CMIS, and the availability of the standard in SharePoint 2010.
SharePoint is falling behind¶
Although you have some idea about SharePoint is well to recall some fundamental
SharePoint (in both versions WSS 3.0 and MOSS 2007) they are the Microsoft’s platforms for entreprise content management. They provide management capabilities for documents, web content management, collaboration, enterprise search and business intelligence.
In reality MOSS is built on WSS. This is the kernel of the ECM present in each free Microsoft Windows server. It represents the basic functionality in document management, web content management, and collaboration.
Currently, SharePoint is the most used solution of content management in business, with more than 1 billion (U.S. $) license sold.
Due to the clear weight of Microsoft and its product, analysts are almost unanimous ( word-of-pie, Cmstrends), CMIS will succeed by SharePoint adopting the standard.
But the reactions of Microsoft slow to come and we see that SharePoint is fully behind its competitors in the implementation of CMIS. By the time this wiki is written in Microsoft wrote one article relating to a possible use of CMIS. This article appeared in MSDN and talks about how to integrate a SharePoint library to a CMIS repository.
And even if SharePoint 2010 integrates CMIS, it is important to note that most licenses are sold on MOSS 2007, and for companies who do not (or cannot) migrate to SharePoint2010 they can't benefit from features of CMIS.
CMIS4SharePoint¶
The silence from Microsoft, relating to the fate of CMIS and SharePoint, pushed IP-Tech to achieve CMIS4SharePoint.IP-Tech’s CMIS4SharePoint today is the first implementation of CMIS compatible with the Microsoft SharePoint product.
We will discuss later in this wiki the implementation details of CMIS4SharePoint.
Implementing CMIS4SharePoint¶
SharePoint is characterized by its rich object model; this enabled him to be a true programming platform. This results in an exceptional modularity. These two elements used jointly helped to establish an implementation of CMIS for SharePoint. This implementation requires the addition of new software bricks to those already provided by SharePoint. Thus we have developed an architecture based on. Net Framework 3.5 Sp1 and essentially WCF.
WCF three magic letters designating Windows Communication Foundation was an essential element for the implementation of this project. Thanks to the separation between the communication layer and service’s implementation, WCF allowed to establish means of communication following the interoperable Web services specifications (WS-I and WS-*) and Atom Publishing Protocol. In addition its modularity also allowed us to adapt exchanged messages as well as expose some flexibility of use thanks to supervision through the configuration file.
Ultimately the software architecture adopted by CMIS4SharePoint is as follows:
To use CMIS4SharePoint you need the following hardware:
- Window server 2008
- SQL server 200x
- WSS 3.0 or MOSS 2007
- .Net Framework 3.5 SP1
- The DLL file CMIS4SharePoint + CMIS4SharePoint.svc file + the Web.config configuration file (see Host a WCF service on SharePoint)
These various components are summarized in the following deployment diagram:
Compliance with specification¶
CMIS4SharePoint aims to be consistent with the CMIS version 0.5. For more detail on the choices made during implementation of CMIS 4SharePoint to illustrate the concepts and basic functionality of CMIS please visit the following:
RoadMap¶
Implementing CMIS4SharePoint is not yet complete. The following describes the operations available and what remains to be done.
As a reminder, CMIS offers to consume the services either via SOAP or via AtomPub.
- Soap
- Repository Services --> OK
- Navigation Services --> OK
- Object Services --> OK
- Multifilling Services --> OK
- Discovery Services --> OK
- Versioning Services --> OK
- Relationship Services --> NO
- Policy Services --> NO
- Query Services --> TO_DO
N.B: Relationship Services and Policy Services are not implemented,
in due to the mismatch between these concepts and the SharePoint object model
- AtomPub (REST)
- To do
Installing CMIS4sharePoint: Host a WCF service on SharePoint¶
To get the power of WCF, which is not included by default in SharePoint we have to realize the support in a personalized way.
the steps are described on the Sahil Malik’s blog
We will try in what follows to take these steps while adding to those specific to IIS 7.0 and Windows Server 2008
Step1:Create a WCF directory under SharePoint
Step2:Creating a WCF library
Step3:Create the .svc file
Step4:Write "WCF Virtual Path Provider"
Step5:Custom URLs for REST Services
Step6:Put the CMIS4SharePoint.dll file in the GAC
Step7:Put CMIS4SharePoint.svc and web.config file under the WCF directory in SharePoint (see step 1)
Step8:Execute the console command c:\>iireset
Example of consuming CMIS services¶
Once CMIS4SharePoint properly installed (Test the operation with a web browser), we will now illustrate the use of CMIS, with a client that will list the name and URL of all document libraries available on the SharePoint site.
To start we'll create in a client computer (other than the SharePoint server) a new Console project in Visual Studio 2008 called "ClientTestCMIS.
Once the project created, right click on the project in Solution Explorer and select "Add Service Reference".
In the dialog box that opened, enter the address of your service, press "GO" and then select the named service, as illustrated in this screenshot:
Rename the namespace of the service and validate.
Now Visual Studio generated proxy that includes all services. Now we just have to implement our program:
Note the addition of the using ClientTestCMIS.CMISRefrence; it's in order to facilitate the use of intellisense.
And the result:
We were able to list all document library of SharePoint without using the SharePoint’s Web-services.
Remarque: if you fail to run, and you receive an exception on the "endpoints". * Check the App.config file * of your client. and Check the "address" attribute of the "endpoint" node. In our case we used the IP address because our SharePoint server is not part of the domaine.