Skip to main content

CMIS

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

NOTE: If going from CMIS to CMIS, associations are only included if job type mappings are included


Authentication Connection

  • Name: The name of your CMIS authentication connector
  • Username: Username to authenticate with.
  • Password: Password to authenticate with.
  • URL: The full URL leading to your CMIS endpoint
  • Binding: AtomPub or Web Services. AtomPub is the default and most common choice.
  • Repository ID: You can specify a specific repository to query.
  • Vendor (CMIS 1.0 Only): No vendor, Alfresco, or FileNet

Discovery Connector

The CMIS Discovery Connector requires a CMIS Authentication Connection

  • Name: Unique name for your connector
  • Authentication Connection: Select the auth connector for this discovery
  • Ignore Types (comma delimited list): Chose document types to ignore when running discovery
  • Repository ID: You can specify a specific repository to discovery if supported by your specific CMS. The CMIS Discovery Connector will discover all content models including their metadata and properties.

Integration Connection

Utilizing the CMIS Query Language, the CMIS Integration Connection allows the user to query the CMS system for content and metadata. It is also designed to write content, and it's associated metadata into a CMIS compliant Content Management System (CMS).This connector leverages the Apache OpenCMIS API v1.1.

To set up the CMIS Integration Connection fill in the following fields:

  • Connection Name: Name the Connector
  • Description: Add a description for the connector
  • Authentication Connection: Select the Auth connector
  • Secondary Auth Connection: Not used for CMIS

Job Configuration

A query to run against the source system using The CMIS Query Language. Must begin with

select * from cmis:document d

from there you can perform any type of query needed to collect the specific documents or types you wish. Most commonly, we walk a file tree using the root folder's node reference like so:

select * from cmis:document d WHERE in_tree('workspace://SpacesStore/3144f53f-55b9-478e-9ad8-bca477a54238')

As with most query based repo connections, we append the start and end times from the Details tab of the job to restrict the documents based on their last modified date

This appends the following to the query:

d.cmis:lastModificationDate >= TIMESTAMP (Your Configured Start Time) AND d.cmis:lastModificationDate <= TIMESTAMP (Your Configured End Time)

CMIS Query Order By:

The field and ordering in the form of (Field) [ASC/DESC]. This will be added as an ORDER BY clause

If left blank, the following will be added to the query, after the modified time clause

ORDER BY cmis:lastModificationDate DESC

Version Depth:

How many versions of a document to retrieve, going backwards. If the value is five, then the connector will attempt to retrieve the current document and its five most recent versions, if they exist.

Search All Versions:

Must be true if connecting to a Nuxeo repository. Must be false if connecting to an Alfresco repository.

Process Relationships:

Supported in most Alfresco systems. This will attach any relationships found as metadata, similar to version information

warning

If you are running with process relationships checked, and the source system does not support it, there will be an error in the logs, but the document should continue processing without error.


Content Service Connector

This section covers the CMIS specific configuration of the Content Service Connector. For a description of how to set up a content services connector generically see Content Service Connectors.

Supported Method

  • Check In
  • Check Out
  • Create Folder
  • Create File
  • Create Relationship
  • Update File
  • Create File from Item
  • Get Document by path
  • Update Document Properties
  • Get File Content
  • Get Document Properties
  • Delete Folder
  • Get Root Folder ID
  • List Folder Items
  • Delete Object by ID
  • Get Types
  • Get ACLs
  • Post ACLs
  • Delete ACL

Managing Permissions with CMIS Content Services

The API supportsGET, POST, and DELETE calls.

All the endpoints take the "id" parameter, which takes the form of a string.

Ex. 5dba1525-44a6-45ed-a42e-4a155a3f0539

Read Permissions (ACLs)

Request:

  GET /api/repo/(connectorid)/acls?id=(id)

Description:

Retrieves a list of in the format of ["principalID:permission1,permissions2",..... ]

Path Parameters:

connectorid :The connector id of your content service connector

Query Parameters:

id:The repository id of the item.

  GET /api/repo/cmis/acls?id=5dba1525-44a6-45ed-a42e-4a155a3f0539

Returns:

{  
"results": [
"user@alfresco.com:cmis:all"
],
"success": true
}

Example With CURL

  curl -u admin:admin "localhost:8081/simflofy-admin/api/repo/cmis/acls?id=5dba1525-44a6-45ed-a42e-4a155a3f0539" | json_pp

Write Permissions (ACLs)

Request:

  POST /repo/(connectorid)/acls?id=(id)&acls=(acls)

Description:

Adds a principal to an object with the specified permissions. If the object exists, replace its permissions with those supplied.

Path Parameters:

connectorid :The connector id of your content service connector

Query Parameters:

id:The repository id of the item.

acls: A JSON String in the format of {"principalID":"permission1,permission2",....}

  POST /api/repo/cmis/acls?id=5dba1525-44a6-45ed-a42e-4a155a3f0539&acls={"newuser@alfresco.com":"cmis:read,cmis:write"}

Returns:

{  
"results": [
"user@alfresco.com:cmis:all",
"newuser@alfresco.com:cmis:read,cmis:write"
],
"success": true
}

Example With CURL

  curl -u admin:admin -X POST "localhost:8081/simflofy-admin/repo/fn/acls?id=5dba1525-44a6-45ed-a42e-4a155a3f0539&acls={%22newuser@alfresco.com%22:%22cmis:read,cmis:write%22}" | json_pp

Delete Permissions (ACLs)

Request:

  DELETE /repo/(connectorid)/acls?id=(id)&acls=(acls)

Description:

Remove a principle from an object.

Path Parameters:

connectorid: The connector id of your content service connector

Query Parameters: id:The repository id of the item.

aclId:a comma delimited link of principal Ids to remove from the target document.

  DELETE /api/repo/cmis/acls?id=5dba1525-44a6-45ed-a42e-4a155a3f0539&aclId=newuser@alfresco.com

Returns:

{
"success": true
}

And the following GET call should return:

{  
"results": [
"user@alfresco.com:cmis:all"
],
"success": true
}

Example With CURL

  curl -u admin:admin -X DELETE "localhost:8081/simflofy-admin/repo/fn/acls?id=5dba1525-44a6-45ed-a42e-4a155a3f0539&aclId=newuser@alfresco.com| json_pp

Looking to integrate a CMIS compliant system? We can help.