I'm starting this thread to gather some ideas/insights for an issue where I'm currently trying to wrap my head around. It seems ideal to me to explain the issue in a few bullet points.
Requirements:
- Displaying data of an external data source in a Dynamics custom model-driven app
- Each record of the external data source will be related to a Contact record in Dynamics
Limitations/Restrictions:
- Simply migrating data to Dataverse is not an option, as the amount of data in the external data source is quite significant and we would like to limit data storage
- An OData layer has been built on the external data source to be able to query the data
- Operations on the external data source are restricted to read only
- The external data source does not use GUIDs as a key
- The external data source is not static (records are being added every day)
- As far as I know it's not possible to add columns to the external data source
- Every column in the external data source is of type string
Current design:
- We have already built a limited Custom Data Provider (Retrieve & RetrieveMultiple) and are planning to use a Virtual entity to be able to show the data in the model-driven app
If you're a bit familiar with how Custom Data Providers and Virtual Entities work, you might've already noticed the biggest problem lies in the absence of a GUID in the external data source.
I've been looking to work with the existing columns and trying to develop custom code which can convert these values to GUIDs and the other way around, without luck unitl now.
So now I'm looking for some ideas or insights on how to potentially solve this problem (if it is solvable...).
As of now the only 2 options I see are the following:
- Insist on adding a GUID column to the external data source => practically solves everything but not probably not possible
- Work with some kind of extra layer in between (eg. API) which retains a collection (eg. tuple, Dictionary) of hardcoded GUIDs and provides us with a relationship between a GUID and a record in the external data source => will probably work but feels like too much 'Ninja'
Any help would be very much appreciated!