CMIS

What is CMIS

CMIS is an open and cross-platform protocol used for content synchronization between different systems. See: http://en.wikipedia.org/wiki/Content_Management_Interoperability_Services


Kooboo implementation of CMIS


Kooboo CMS did not fully implement all the API methods defined in CMIS. We implemented some interfaces from RepositoryService and ObjectService and slightly modify them.

RepositoryService:
URL: http://{kooboocms}/cmis/RepositoryService.svc

RepositoryService is used to query list of sites in current Kooboo instance and get schema folders of each site.

Specification:

getRepositories:
get a list of all the sites that under current Kooboo Instance.

getRepositoryInfo:
get the basic information of a specified site.

getTypes:
get all the schemas of a specified site.

getTypeDefinition:
Get all the folders from a specified site.

ObjectService
URL: http://{kooboocms}/cmis/ObjectService.svc

ObjectService is used to perform the basic CRUD operation.

createDocument:
Create new contents

getProperties:
get all the atrributes from a spcified content.

getAllowableActions:
get all allowed actions

getContentStream:
get content stream

updateProperties:
Update attributes of the spcified content.

deleteObject:
Delete spcified content

We add an additional method to get the list of documents:

getDocuments:
get a ID list of all the content from a specified folder.

For more details regarding the interface, please download WSDL.


Kooboo CMIS Technical Specification


Kooboo CMIS use WCF technology. Developers will be able to invoke or create new Web Service to manipulate the data from Kooboo content repository once they download the auto-generated WSDL


What can be done with Kooboo CMIS API


The primary functionality of Kooboo CMIS API is to allow user to manage the content from different platform in a distributed way. Based on CMIS, the developer is capable of creating their own backend to maintain the content data of Kooboo, or importing data into Kooboo's Content Repository via third-party's systems. By combining Kooboo's site management, page management, template management and other functionalities, it provides the basic service of managing a website.


Kooboo CMIS API Security Configuration


Kooboo CMIS API uses a security mechanism based on username/password scheme integrated with Kooboo ASP.NET membership. You need to assign a user and password when connecting, for example:

ServiceReference2.RepositoryServiceClient repositoryService = new RepositoryServiceClient();
repositoryService.ClientCredentials.UserName.UserName = "admin";
repositoryService.ClientCredentials.UserName.Password = "admin";

Due to the requirement of SSL by WCF when using username authorization, this increases the complicity of using Kooboo CMIS. We have used a third party component to solve this problem, see: http://www.codeproject.com/KB/webservices/ClearUsernameBinding.aspx

When using the CMIS API, there are a few changes need to be made in client configuration file. Please download the CMIS demo project from http://kooboo.codeplex.com


Content Synchronization among different Kooboo instances based on Kooboo CMIS


We develop a content synchronization component based on Kooboo CMIS for organizations that have some special requirement such as synchronizing content among different Kooboo instances.

It will significantly enhance the security of content management and the flexibility of deployment.

For a typical situation, some organizations may want to manage the content from a server in the intranet, and publish the data to Internet when ready. Kooboo's content synchronization plugin would be a good choice.

We already provided this plugin for content synchronization under the "Schedule task". To use this feature, add the following job to the "Schedule Task".

Kooboo.ContentSync.SyncJob, Kooboo.ContentSync

In the parameter setting of this job, you can define the local and remote folder. New or updated content of local folder will be synchronized to remote folder.

Format of the parameter value as below:

Local Folder, Remote Folder, Remote Service URL, UserName, Password

Parameters are separated by ",".

Local Folder: Local folder UUID
Remote Folder: Remote folder UUID
Remote Service: Remote CMIS service UR, for example: http://{site}/CMIS/ObjectService.svc
User Name: Kooboo user of remote instance
Password: password

See below example screen.



We have provided an sample project using CMIS, please download Kooboo_CMIS_DEMO.zip from Here

Important note:


CMIS only supports synchronization from folder to folder; child content will not be transferred.
CMIS Supports Synchronizing content repository among different database versions