With the recent release of the Content Management Interoperability Services (CMIS) connector for SharePoint Server 2010 as part of the Microsoft SharePoint 2010 Administration Toolkit v1.0 I decided that I would like to take it for a spin and see how it works and what it has to offer. For me, since I don’t have access to any non-Microsoft CMIS Producers or Consumers (such as SAP, Alfresco and Documentum) I figured the easiest thing to do would be deploy the connector into the 2010 Information Worker Demonstration and Evaluation Virtual Machine (RTM) 2010-7a vm.
Generally speaking the experience was pretty smooth, but I did encounter some small bumps along the way. With the help of my colleagues I got through it, and I’ll share the details here.
The first obstacle I encountered was that as of right now (July 2010) there’s virtually no documentation for the connector. I’m told that is being addressed, and in the interim hopefully this blog post will temporarily bridge the gap.
Step 1 – Run the Administration Toolkit installer. This is a quick and painless exercise. I accepted all the defaults, and the final result as far as the CMIS connector goes is that a web solution package will have been deposited onto your server: “C:\Program Files\Microsoft\SharePoint 2010 Administration Toolkit\Content Management Interoperability Services (CMIS) Connectors\spcmis.wsp” This one package contains both the Producer and Consumer features.
Step 2 – Add the solution to the farm solution gallery. This is done via the PowerShell command line: (don't forget that Tab path completion is your friend here, so you don't have to tediously type all of this)
Step 3 – Deploy the solution. This can be done either at the PowerShell command line or in the Central Admin UI. I chose the latter. Go to Central Administration -> System Settings -> Manage farm solutions, click on the spcmis.wsp name, and then Deploy Solution. In my case I chose to deploy it to all web apps. You could be more selective if you like, but keep in mind which will be your Producer; you’ll need to know that for the next step.
When deployment is complete, the Solution Properties will look similar to this:
Step 4 – Make sure the web app that will host the Producer only has 1 host header. If you don’t you’ll run into an error down at Step 7 stating that the service could not be activated (like I did initially). The explanation of the cause and solution to this problem is described here. So, since in my case I wanted http://intranet.contoso.com to host the Producer sites, I went into IIS Manager, selected the Intranet site (a.k.a web app in SharePoint) clicked on Bindings… and removed the entry for http intranet host header (of course, this means you can’t browse to http://intranet anymore, but oh well).
Step 5 – Activate the Producer Feature on the site that holds the content that you want to consume. I did this on the root site at http://intranet.contoso.com/ . Site Settings -> Manage site features, and click “Activate”. The result will look like this:
Step 6 – Activate the Consumer Feature on the web app where you will want to be able to use the CMIS Consumer web part. I did this on the site collection at the root of http://itweb.contoso.com . Site Settings -> Manage site collection features, and click “Activate”. The result will look like this:
Step 7 – Insert the CMIS Consumer web part onto a page. This is all standard stuff: Pick any page in the consumer site collection, put the page into edit mode, go to the Insert ribbon and pick the CMIS Consumer web part:
Then edit its properties and then this is where things were mysterious for me. What the heck goes into the “Specify WSDL Address ” property? I suppose if I were more familiar with the CMIS spec and/or had spent more time dissecting the spcmis.wsp I might have eventually figured this out, but rather I asked around and luckily I was able to find someone smarter than me to tell me.
The correct URL will be of the form <protocol>://<ProducerSite>/_vti_bin/cmissoapwsdl.aspx .
Once you plug that in, you can press the “Get Repository List” button, which will call the RepositoryService.svc behind the scenes (you’ll be prompted in the UI to enter credentials that have access there…) and finally the “Select Repository” dropdown list will be populated with all of the libraries and lists found on the Producer site.
At this point you’re basically done. Click “OK” to save the property changes, and “Stop Editing” to finish you page editing, and then you should be looking at documents from the Producer site being displayed in the Consumer web part:
Thanks to Volkhard, Paul and Ryan for their assistance!