I'm planing a new application for a customer that requires to read data from an external system.
Basically, the external system will expose a read-only OData service (to be defined actually). The service will expose a very simple type with 4 fields (technical ID, business ID, Title and country in iso format). However, the number of items can be very large (nearly 10000 records in the DB).
The requirement is to be able to link documents in SP with an item in the remote list.
My first idea is to use BCS to create an external content type and a list bound to this type, then add a lookup column in the doc lib to this list. However I'm new to the BCS world and I have several questions :
- Can I access OData endpoints with BCS ? Eric white answered this question, but I think it's a bit complicated versus a SQL data source. Moreover, his sample does not implement paging (the whole table is red).
- when accessing such endpoint, how should I handle paging ? I don't want to read the whole data each time a user open the picker.
- how does BCS behaves when the external source is down ? My few tries let me think the SP site still works, but without the possibility of creating or changing items, as the external fields won't be validated.
- If I'm right, is there a simple way to maintain a local copy of the data (the data is not often changing luckily) ? Both for avoiding system downtime and for lowering pressure on the external system ?
- using the picker, how does the search is handled ? should I implement a filter over the OData endpoint to avoid reading the full content ?
- any tip a bcs newbie should know ?