SharePoint Stack Exchange is a question and answer site for SharePoint enthusiasts. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Problem: We need to create a generic document repository that will store all documents within an enterprise. The repository will be used by external systems, that is other SharePoint Web Applications (in the same farm, and other farms) and by other none-sharepoint systems. The repository will provide only basic functionality to the external systems, create library, add and update document, and view list of documents in a library.

Reason: Strategic decition. All documents should be located system. Allows for easier replacement of a system (since documents and metadata are stored in one place and in the same format)

Scenario: A external system (say CRM) needs to store documents in the generic document repository. The developers of the other system (CRM) are given the interface of the generic document repository. This interface provides basic CRUD for library and document. The interface is not tied to a specific contenttype, so any contenttype could be specified by the external system. The contenttype must be created in the generic repository, but apart from that, the generic repository is ready to be used by the external system.

Question: How should this generic interface be created?

Alternative 1: Don't develop anything, let the external systems use the client object model and provide some development guidelines.

Alternative 2: Create a set of web services, wrap the metadata in an xml argument and refer also the contenttype id. You may also optionally host them inside a custom service application.

Any feedback are very welcome. If you have comments on the design, or if you would recommend any of the alternativs we would be very happy!

Thanks for any help



share|improve this question
up vote 0 down vote accepted

I like your Alternative 2. It puts a little more of the work on you, but it gives you tighter control over what happens on your server. Plus it is more open and can perhaps support a wider variety of external systems.

share|improve this answer
Thanks for your comment. – Larsi Dec 2 '10 at 6:18

I definitively think alternative 2 is a better solution than alternative 1. And agrees with Rob Wilson that it gives you a tighter control over what happens on your server, which I consider important.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.