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