A better SharePoint connector – part 1

Last week, I described how CRM’s standard SharePoint connector hurts SharePoint (http://journeyintocrm.com/archives/148). Since then I’ve been intrigued by finding a better way of connecting CRM and SharePoint. This articles describes the first step in the design of a of a better connector. The connector I’m going to create is a proof of concept. In the articles to come I’ll share the concept and the essential code required. 

Design goals:

  • Develop a connector to store document in SharePoint enriched with meta data without the use of external tooling.
  • The user in CRM may not notice that the document is stored in SharePoint, the user experience has to be native.
  • Documents stored in SharePoint can be deleted from CRM as well.


  • No limitations. It has to be able to run on-premise or online
  • It has to be suitable for both SharePoint 2013 or SharePoint online


Files in CRM are stored as attachments. These attachments are attached to the parent entity as a note (annotation). For now I’ll focus on the annotation. When looking a bit further at CRM’s functionality, CRM offers several hooks to add the connector functionality. I’m going for the most obvious at first and pick the plugin mechanism. The nice things about plugins is that you can attach additional functionality to events happening on entities in both pre and post states. In this case I need to attach to the read/read multiple event, create event, and delete event.

In case the plugin mechanism might not be satisfactory, I could also use the workflow mechanism. In case of a workflow, I would go for the asynchronous workflow, as this provides the most fluent user experience.


This morning while running, the following concept popped right into my head.


In the next SharePoint connector article I’ll go more into detail and describe what the events should do. So stay tuned!