Enterprise Content Management

Armedia Blog

Archive for the ‘SharePoint’ Category

Sharepoint 2010: REST Atom Service and JAVA

May 26th, 2011 by Tim Lisko

 

This is the first of two blogs where I demonstrate how to use the openCMIS library from a JAVA client to connect to a CMIS enabled SharePoint site through the REST Atom service of SharePoint. The “lessons learned” and tips I include come from examining MSDN and CMIS documentation, “how to” results from google searches, debugging, and the time honored “trial and error” development methodology!

Accessing SharePoint Site from JAVA Application

The following provides instructions and examples for connecting to and manipulating objects in a CMIS enabled SharePoint 2010 site from a JAVA Application using the Apache Chemistry OpenCMIS[2] API.

SharePoint 2010 Configuration

The OpenCMIS API uses the REST AtomPub services provided by a CMIS enabled SharePoint site. So the first step is to ensure the SharePoint site of interest is CMIS enabled. MSDN provides guidance for enabling CMIS in a SharePoint site[3] which I also cover in a previous blog “SharePoint 2010 – Implementing CMIS.”

Two other things are needed to connect to the SharePoint site: Authorization Credentials and the GUID of the SharePoint library of interest. CMIS Repositories are mapped to SharePoint Lists and Libraries. Unfortunately a session is based on a particular repository, so you cannot operate in two separate lists or libraries in the same session.

You need to be aware of two additional configurations in the SharePoint 2010 site: User Authorization and Versioning.

Authorization in IIS for the web site needs to match that set for the site in the Central Administration application.

Versioning is set in the SharePoint library settings. Whatever version setting is made must be mirrored in the REST method when adding a new document to the site.

Connecting to SharePoint CMIS Provider

The following is an example of connecting to a SharePoint CMIS Repository and establishing a session with that repository.

  import org.apache.chemistry.opencmis.client.api.Repository;
importorg.apache.chemistry.opencmis.client.api.Session;
import org.apache.chemistry.opencmis.client.api.SessionFactory;
import org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl;
import org.apache.chemistry.opencmis.commons.SessionParameter;
import org.apache.chemistry.opencmis.commons.enums.BindingType;
import java.util.HashMap;
import java.util.Map;public class CMISConnect {   public void fillParams()    {//define some values for the connection string
String rest_base = “http://armwssp:2333/_vti_bin/cmis/rest”;
String repository_id =”E8AE6B3A-BAC2-4B4C-B889-BAE76A8142E6″;
String atompub_url = rest_base + “/” + repository_id + “?getRepositoryInfo”;
String username =”username”;
String password = “userpassword”;

//put everything into a HashMap
Map<String, String> parameter = new HashMap<String,String>();
parameter.put(SessionParameter.USER,username);
parameter.put(SessionParameter.PASSWORD, password);
parameter.put(SessionParameter.ATOMPUB_URL, atompub_url);
parameter.put(SessionParameter.BINDING_TYPE,BindingType.ATOMPUB.value());
parameter.put(SessionParameter.LOCALE_ISO3166_COUNTRY,”");
parameter.put(SessionParameter.LOCALE_ISO639_LANGUAGE,”en”);
parameter.put(SessionParameter.LOCALE_VARIANT,”US”);
SessionFactory f = SessionFactoryImpl.newInstance();
Repository soleRepository = f.getRepositories(parameter).get(0);
Session session = soleRepository.createSession();
      }
}

 
 
 
 
 
 
 
 


 

Key things to note:

1) The ATOMPUB_URL session parameter is exactly that prescribed in the MSDN library referenced on the first page.
2) You establish a session on a Repository.
3) Though you can really only see one repository at a time in SharePoint, you have to use the “getRepositories” method and the first item in the list to instantiate the Repository object.

Retrieving SharePoint Library Properties and Capabilities

Now that you have a session you can look at some of the Repository (SharePoint library) properties and capabilities.
 

  RepositoryInfo info = session.getRepositoryInfo();
String myInfo = “CMIS version: ” + info.getCmisVersionSupported()+
        ”\n Repository ID: ” + info.getId() +
        ”\n Repository Name: ” + info.getName() +
        ”\n Product Name: ” + info.getProductName();
RepositoryCapabilities rc = soleRepository.getCapabilities();
String capabilities = twolines + “SUPPORTED CAPABILITIES:” + newline
+ tab + “isAllVersionsSearchableSupported: ” + rc.isAllVersionsSearchableSupported() + newline
+ tab + “isGetDescendantsSupported: ” + rc.isGetDescendantsSupported()+ newline
+ tab + “isGetFolderTreeSupported: ” + rc.isGetFolderTreeSupported()+ newline
+ tab + “isMultifilingSupported: ” + rc.isMultifilingSupported()+ newline
+ tab + “isPwcSearchableSupported: ” + rc.isPwcSearchableSupported()+ newline
+ tab + “isPwcUpdatableSupported: ” + rc.isPwcUpdatableSupported()+ newline
+ tab + “isUnfilingSupported: ” + rc.isUnfilingSupported()+ newline
+ tab + “isVersionSpecificFilingSupported: ” + rc.isVersionSpecificFilingSupported()+ newline
+ tab + “CapabilityContentStreamUpdates: ” + rc.getContentStreamUpdatesCapability() + newline
+ tab + “getChangesCapability: ” + rc.getChangesCapability() + newline
+ tab + “getRenditionsCapability: ” + rc.getRenditionsCapability() + newline
+ tab + “CapabilityQuery: ” + rc.getQueryCapability() + newline
+ tab + “CapabilityJoin: ” + rc.getJoinCapability() + newline
+ tab + “CapabilityAcl: ” + rc.getAclCapability();

 

Results:

  CMIS version: 1.0Repository ID: e8ae6b3a-bac2-4b4c-b889-bae76a8142e6
Repository Name: Shared Documents
Product Name: Office SharePoint Server
SUPPORTED CAPABILITIES:
isAllVersionsSearchableSupported: false
isGetDescendantsSupported: false
isGetFolderTreeSupported: true
isMultifilingSupported: false
isPwcSearchableSupported: true
isPwcUpdatableSupported: true
isUnfilingSupported: false
isVersionSpecificFilingSupported: false
CapabilityContentStreamUpdates: ANYTIME
getChangesCapability: OBJECTIDSONLY
getRenditionsCapability: NONE
CapabilityQuery: BOTHESEPARATE
CapabilityJoin: NONE
CapabilityAcl: MANAGE
 

Things to note:

1) Getting a RepositoryInfo object was not necessary – the same methods are available to the Repository object.
2) “twolines”, “newline”, and “tab” are public string variables I created for formatting purposes.
3) The “getCapabilities” method of the respository sets the RespositoryCapabilities object, but that object is not iterable, so you have to retrieve the capabilities you are interested in individually.

I hope that I have shown how you can use the Chemistry openCMIS library to connect to a CMIS enabled SharePoint 2010 site through the REST Atom Service and look at some of the SharePoint site’s capabilities.

In my next blog I will show how you how to use the openCMIS library and REST Atom Service to:
1) Access and Create Folders; 2) Iterate over SharePoint folders; and 3) Add documents to a SharePoint folder.


TwitterFacebookLinkedInStumbleUponPinterestGoogle+DeliciousDiggPrintFriendlyShare

HOW TO: SharePoint 2010 – Implementing CMIS

May 25th, 2011 by Tim Lisko

I was tasked to create a SharePoint site and enable it for CMIS access from a java application we were developing.  Since this was new to me, I wanted to establish a SharePoint to SharePoint connection using CMIS before trying to connect from our java application. Starting with the MSDN documentation and with some “trial and error” I got things to work. There were some “lessons learned” primarily in the area of configuring IIS which are not covered here.

Enabling Content Management Interoperability Service (CMIS)

CMIS is not automatically instantiated on a SharePoint site. It must be created, added to the list of services at the Farm level and then deployed to the selected content SharePoint sites in the Farm. I pulled the information for how to do this from documentation in the msdn document library[1].

There are three steps to get a SharePoint site able to consume or provide CMIS content. It isn’t clear what edition of SharePoint 2010 is required. You can infer that Foundation is sufficient to be a producer and Standard for a consumer.[2]:

  1. Install CMIS to SharePoint Farm
  2. Deploy CMIS Connector Solution to SharePoint Content Sites
  3. Activate CMIS Connector services in each site


Install CMIS

There are two steps to getting the CMIS connector installed to a SharePoint Farm site.

  1. Install Administrator Toolkit if not already installed
  2. Add the CMIS Connector solution to the Farm Site

Install Administrator Toolkit

Download and installation instructions for the Administrator Toolkit are located in the msdn library.[3] The instructions basically direct you to download and execute the installation file.

Add CMS Connector Solution to the Farm Site

  1. Open the “SharePoint 2010 Management Shell” by selecting it from the list of Microsoft SharePoint 2010 Products in “Start – All Programs.”
  2. Type the following at the prompt in the power shell:


Add-SPSolution –LiteralPath ‘C:\Program Files\Microsoft\SharePoint 2010 Administration Toolkit\Content Management Interoperability Services (CMIS) Connectors\spcmis.wsp’. You will get an “Access denied” error if you do not have SPShellAdmin rights.
[4]


Deploy CMIS Connector Solution

Implement the CMIS Connector solution in your SharePoint content sites by the following

  1. Deploy the CMIS solution from the Central Administration web site
  2. Activate in the CMIS services in each SharePoint content site.

Deploy CMIS Connector Solution

  1. Open the SharePoint 2010 Central Administration web site.
  2. Select “System Settings” from the navigation panel on the left side of the page.
  3. Under “Farm Management” select “Manage farm solutions”
  4. Click “spcmis.wsp” which should be in the displayed list of Farm Solutions.

The next step requires that the “SharePoint 2010 Administration (SPAdminV4)” service is running. The default startup for this service is “manual”. You can easily start the service by selecting it from the list of services in the Microsoft Management Console.

  1. Select the SharePoint content sites you want to deploy to and click “Deploy”

The status of “spcmis.wsp” in the list of Farm Solutions should now read “Deployed.”


Activate CMIS Connector Services

There are two “flavors” of the CMIS connector services: Consumer and Producer. Either, both, or neither may be activated on your SharePoint content web site.

To activate the connector services:

  1. Open your content web site.
  2. Select “Site Settings” from the “Site Actions” menu.

To activate the CMIS Consumer

-          Under “Site Collection Administration” select “Site collection features”

-          Click the “Activate” button next to the “Content Management Interoperability Services (CMIS) Consumer” list item

To activate the CMIS Producer

-          Under “Site Actions” select “Manage site features”
-          Click the “Activate” button next to the “Content Management Interoperability Services (CMIS) Producer” list item
Congratulations! The CMIS connector service is now implemented! The next section provides instructions for building a web part to consume information from a CMIS provider.
 

Implementing the CMIS Consumer Web Part

SharePoint 2010 provides a CMIS Consumer web part that allows you to display the contents of a list from a CMIS provider. This requires that an instance of the Secure Store Service has been implemented.

  1. Open the page in edit mode and select the “Insert” ribbon under the “Editing Tools” group.
  2.  Select the “Web part” button and select “CMS Connector” from the list of Web Part Categories.
  3. Select “CMIS Consumer” from the list of Web Parts (it is the only item in the list).
  4. Add the web part to the page.
  5. Save the page.
  6. In the web part, select the highlighted text “…open the tool pane…” to enter the necessary connection items.
  7. Under “Specify WSDL Address” enter
http://mysiteurl/_vti_bin/CMISSoapwsdl.aspx

Where “mysiteurl” is the link to the SharePoint web site providing the data, armws2008sp-01:2397, for example

  1. Check “WS-Security Required” and select “Basic” or “Digest” which should match your SharePoint provider’s authentication. That authentication is set in the Provider site’s Central Administration web site and should reflect that set in IIS Manager for IIS authentication. I’ve only tried “Basic” to date.
  2. Click the button “Get Repository List.” You may be prompted for user credentials that have access to the site. If all is correct you will see a list of Document Libraries and Lists in the “Select Repository” drop down list.[5]
  3. Select a list or library from the list.
  4. Click “Apply”
  5. Click “Ok”

If all went as planned, you should be able to see the list information in your new web part!

TwitterFacebookLinkedInStumbleUponPinterestGoogle+DeliciousDiggPrintFriendlyShare

CMIS, SharePoint 2010, and file checkouts

May 25th, 2011 by dmiller

SharePoint 2010 is the first SharePoint with a CMIS adapter.  SP 2010 offers a Web Part to request data from other CMIS servers (e.g. Alfresco and Documentum), and a CMIS producer to offer data to CMIS clients (e.g. Apache Chemistry).

Theoretically this means you can write ECM applications targeting SP 2010, Alfresco, and Documentum using only Chemistry (or some other CMIS application), the same as you can write database applications using only JDBC (and the vendor’s JDBC driver).  How well does it work in practice?

Actually, it seems to work pretty well, especially if your application needs can be expressed using the operations supported by CMIS… to some extent CMIS is a lowest common denominator.  The vendor’s specific tools (SharePoint Web Services, Alfresco Explorer and Share, DFC / DFS) certainly expose much more of the vendor’s unique functionality.  CMIS supports repository, navigation, object, versioning, multifiling, ACL, policy, discovery, and relationship services, via WSDL and REST bindings.

The CMIS standard defines the above services, and also defines bindings for WSDL, and REST (using the Atom protocol).  Apache Chemistry provides a unified API, such that you specify WSDL or REST when you connect to the repository, and then use the same Chemistry API either way.  Chemistry translates your API calls into the appropriate WSDL or REST requests.

For my project, I wanted to use the REST binding, since REST requests tend to be less verbose than WSDL, hence sending less traffic over the wire.  Also I have more experience with REST, since my project is using Spring MVC to publish REST services.

So we tried connecting to SP2010 using Chemistry’s REST bindings.  This was no trouble, as soon as we figured out the right URL to use (something like this: http://<sp2010_url>/_vti_bin/cmis/rest/<list_or_library_guid>?getRepositoryInfo).  Chemistry’s cookbook page was a big help.  Then we tried querying the repository, listing folders, listing folder contents, creating files, and retrieving files.  Everything worked great!  CMIS looked really awesome!

Then we tried checking out a file.  Wham!  We ran into a brick wall here.  SP2010 always returned an HTTP 400 “bad request”, no matter what we tried.  I traced the REST request Chemistry sent to SP2010, and used the excellent Firefox REST Client to send different versions of that request; no matter what, even when I sent invalid XML, I always got the same “bad request” response.

Time to work with Microsoft Support.  They reproduced the error, and are still working on the issue.  However, my support contact tried checking out over WSDL, and it worked fine!  I tried it myself; after jumping over a few hurdles to use Chemistry against SP2010 via WSDL, it worked fine!  So for now, we are stuck using the more-verbose WSDL protocol.  My MS support contact is still working with the REST support though.

As for the hurdles, Chemistry’s cookbook page came to the rescue again; the main issue is you have to download the WSDL from the SP2010 site yourself, and give Chemistry a file-based URL to the downloaded WSDL.  As far as I can tell, you can’t point Chemistry straight to SP2010′s WSDL; I always get a “401 Unauthorized” error.  It might be possible to use a normal HTTP client to download the WSDL locally, then point Chemistry to the dynamically-downloaded WSDL; I haven’t gotten that far yet.

I did make one change to Chemistry’s recipe; the cookbook page says to use Chemistry’s NTLM authentication module.  As far as I can tell, this requires the app server running your Chemistry-based application to run as a Windows domain user known to the SP2010 server.  But I want the app server to run on any Tomcat-supported OS.  Happily, it turns out you can use Chemistry’s standard authentication provider, and just provide a username and password like normal… obviously you would want to run such a connection over HTTPS!

Below is the code snippet I used to verify I could check out from SP2010 using CMIS (specifically Apache Chemistry) over WSDL:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package com.armedia.acm.ecm.service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.chemistry.opencmis.client.api.Document;
import org.apache.chemistry.opencmis.client.api.ObjectId;
import org.apache.chemistry.opencmis.client.api.Repository;
import org.apache.chemistry.opencmis.client.api.Session;
import org.apache.chemistry.opencmis.client.api.SessionFactory;
import org.apache.chemistry.opencmis.client.bindings.CmisBindingFactory;
import org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl;
import org.apache.chemistry.opencmis.commons.SessionParameter;
import org.apache.chemistry.opencmis.commons.enums.BindingType;
import org.junit.Test;

/**
*
* @author millerd
*/

public class SharePointWSDLTest
{

@Test
public void connectViaWsdl() throws Exception
{
String cwd = System.getProperty("user.dir");
System.out.println("Working dir: " + cwd);
// Default factory implementation of client runtime.
SessionFactory sessionFactory = SessionFactoryImpl.newInstance();
Map parameter = new HashMap();

// User credentials.
parameter.put(SessionParameter.USER, "some-domain\\some-user-account");
parameter.put(SessionParameter.PASSWORD, "some-password");

// getting the wsdl via http doesn't work - 401 Unauthorized.
//String wsdl = "http://some-host/_vti_bin/cmissoapwsdl.aspx?wsdl";

// relative file-based URL works fine so long as you give it the
// right relative path... ie. you have to know what the current
// working directory is.
String wsdl = "file:target/classes/acmv2-sharepoint.wsdl";
// Connection settings.
parameter.put(SessionParameter.BINDING_TYPE, BindingType.WEBSERVICES.value());
parameter.put(SessionParameter.WEBSERVICES_ACL_SERVICE, wsdl);
parameter.put(SessionParameter.WEBSERVICES_DISCOVERY_SERVICE, wsdl);
parameter.put(SessionParameter.WEBSERVICES_MULTIFILING_SERVICE, wsdl);
parameter.put(SessionParameter.WEBSERVICES_NAVIGATION_SERVICE, wsdl);
parameter.put(SessionParameter.WEBSERVICES_OBJECT_SERVICE, wsdl);
parameter.put(SessionParameter.WEBSERVICES_POLICY_SERVICE, wsdl);
parameter.put(SessionParameter.WEBSERVICES_RELATIONSHIP_SERVICE, wsdl);
parameter.put(SessionParameter.WEBSERVICES_REPOSITORY_SERVICE, wsdl);
parameter.put(SessionParameter.WEBSERVICES_VERSIONING_SERVICE, wsdl);

parameter.put(SessionParameter.AUTHENTICATION_PROVIDER_CLASS, CmisBindingFactory.STANDARD_AUTHENTICATION_PROVIDER);

// Create session.
Session session = null;

// This supposes only one repository is available at the URL.
List repositories = sessionFactory.getRepositories(parameter);
for ( Repository rep : repositories )
{
System.out.println("Rep name: " + rep.getName() + "; id: " + rep.getId());
if ( "Unapproved Files".equals(rep.getName()) )
{
session = rep.createSession();
Document doc = (Document) session.getObjectByPath("/2011/05/03/10/31/19/log4j_103124.properties");
System.out.println("Doc ID: " + ( doc == null ? " *NOT FOUND* " : doc.getId()));
if ( doc != null )
{
ObjectId co = doc.checkOut();
System.out.println("Checked out doc ID: " + co.getId());
}
}
}
Repository soleRepository = sessionFactory.getRepositories(parameter).get(0);
session = soleRepository.createSession();

}
}

 

Stay tuned for my post CMIS, Sharepoint 2010 and File Check-ins

TwitterFacebookLinkedInStumbleUponPinterestGoogle+DeliciousDiggPrintFriendlyShare

Microsoft SharePoint 2010 and The Last Great Hope

June 22nd, 2010 by Jim Nasr

Anything that defines the “future of productivity” deserves a welcoming befitting a king: “the lion roars back”! Luscious superlatives take a number…

And now back to our regularly scheduled program… Yes, SharePoint 2010 has arrived (officially since mid-May). Yes, SharePoint 2010 is a good improvement over the previous incarnation (MOSS 2007). And yes, most importantly, SharePoint 2010 taps well into the new (vastly better) Office 2010. And yes, SharePoint 2010 is the silver bullet to fix all your ECM problems. Errr…ok, that’s one yes too many.

Though no silver bullet, and perhaps just a smidgen short of the future of productivity, SharePoint 2010 (and, in my opinion, even more so as a hosted solution) definitely has a place at the table. As with all things hyped and dipped in unlimited marketing resources, the trick is to figure out what is real and what is relevant to your needs. So, consider:

  • Capacity, scalability and performance have improved considerably under SharePoint 2010—no more 2000 item view list limit!! And, Microsoft has done a good job providing metrics, tools and guidelines in this area. SharePoint 2010 requires 64-bit hardware, so installation and, in particular, migration from an existing MOSS 03 or 07 platform needs to be planned carefully, even more so than before.
  • SharePoint 2010 integrates very well with MS Office 2010, including Outlook calendaring and, heretofore ignored/talented stepchild, Visio. The most exciting part of this integration is the ability to use and edit metadata across SharePoint and Office. This propels true usability and greases the skids tremendously as far as adoption is concerned. The fact that Office is the reader and editor of choice for a lot of content held in SharePoint makes this integration truly relevant.
  • SharePoint 2010 provides the option for imbedded FAST (the search engine). This is a big upgrade over MOSS 07 and brings enterprise functionality and scalability to SharePoint search.
  • As usual, Microsoft has put focus on usability and in SharePoint 2010 there are some notable application usability improvements (such as the enhanced Ribbon, rules for content storage, smarter folders, a term store to manage taxonomy, offline capability through Workspaces, and, of course, the seamless integration with Office 2010).
  • Ease of development: an oxymoron in MOSS 07—more like lots of development—at least as far as web applications were concerned. SharePoint 2010 promises to be far better with a revamped SharePoint Designer and more web services and UI and functional components out of the box. Also, the new Business Connectivity Services (BCS) promises to ease integration with third party applications (such as SAP or Microsoft CRM).
  • SharePoint 2010’s other enterprise-like features: more comprehensive administration capabilities, easier deployment over distributed networks, better backup and recovery options, auditing/compliance features. Notable improvements in breadth and depth of such features over MOSS 07.
  • Surprising improvements in records management capabilities, including the convenient, in-place record declaration. Though SharePoint has claim-to-fame largely for collaboration, and in SharePoint 2010, even more so, with a social networking slant (blogs, wikis, Cloud-tagging, activity feeds into its MySites, etc.), Microsoft has stealthily taken strides to make SharePoint a legitimate records management alternative. SharePoint 2010 is still some way short of the maturity and depth of features provided by the more established records management tools in the market, however ease of use and pull of momentum are definitely in its corner. Watch this space for more in-depth research and opinion to come…

So, some compelling reasons to drink the Kool-Aid. Maybe none more compelling though than its inevitability. Inevitable as, errr, Mr. Know It All not knowing anything at all! SharePoint is here to stay, as proven by the already-out-of-control “SharePoint Sprawl”. Also, frighteningly (CMIS implications aside), Microsoft is quite possibly the only truly one-stop-shop ECM vendor around…not that that’s really all that good: one vendor fits all or the best vendors fit together?

So, buying the hypothesis that it is inevitable, what next? Well, first, what is needed? What does the user need? No tool will solve a problem just because…in fact, in vacuum, it’s likely to compound it. What is the problem? What are the, ahem, six 5Ws (What, Why, Where, When, Who, How)? Back to basics. Yes, clarity, simplicity rule. Don’t let the expensive consultants tell you otherwise. It’s my experience that most of us spend a lot of time and induce a lot of heartburn on edge cases. Spend time on what really matters, and then de-scope and simplify that even more. If, after all that, SharePoint 2010 is still inevitable then consider these three things:

  • What does the user need?
  • What does the user need?
  • What does the user need?

Dilbert on user needs

As engineers, we will spend a huge amount of time and energy on what we would like and what works for us—can’t everything be ext-js, RESTful, Spring Observer, n-tiered, service oriented, virtualized, mirrored, horizontally scaled, run on distributed ESX on redundant 4 way blade servers?! Oh, and, please adhere to the very large and complicated Enterprise IT Policy and System Architecture document (because it’s “Enterprise” it must be the right thing to do, right?!), and to every word of every paragraph of the System Requirements Specification (SRS)—written eighteen months ago by a large committee of “stakeholders”—and be sure to offer up all of the vendor’s glorious catch-all feature-set… Surely, exaggeration to make a point…not really. Bottom line either way: no user: very bloated, very expensive, very politically damning shinny shelfware.

Getting off the user-need soapbox for a second, the next BIG thing to figure out when thinking SharePoint 2010 is migration—nine times out of ten…or maybe 97 times out of 100 it will be needed. Migration from an existing SharePoint (03 or 07) application to the 2010 toolset, migration from a legacy application to SharePoint 2010, migration from another CMS to SharePoint 2010, migration of content and metadata…pick and choose your weapon of choice. Experience tells me that migration is NEVER EASY and its scope is almost ALWAYS UNDERESTIMATED. There are a number of tools that can help, but the solution goes way beyond tool selection; there needs to be a thorough plan (actually a Plan A, a Plan B, a Plan C and maybe even a Plan D). Oh, and let’s not worry about fixing the sprawl just yet…that’s a much bigger deal!

Not to be a buzzkill, but that’s not all. There is a lot more to consider depending on your specific view of the world. One other thing for sure though is licensing. In the great (and truly annoying) tradition of most Enterprise Software vendors, the licensing is a matrix of variables and if-thens. Every family needs a resident cost-accountant to truly savor such mind-bending aesthetics…

So, SharePoint 2010 represents some interesting opportunities for users and organizations and poses some further dilemma in the ECM space. A definite improvement over MOSS 07 but not (yet?) the iPhone of its genre. Competitors beware, Microsoft is coming…is here.

Lots to look forward to!

TwitterFacebookLinkedInStumbleUponPinterestGoogle+DeliciousDiggPrintFriendlyShare
Copyright © 2002–2011, Armedia. All Rights Reserved.