We are a small team doing work on a LoB system that needs to connect to varied systems such as ERPs and CRMs to extract business processes like invoices, customer info, production orders and the such, for internal use of the application, and then return some specific result to the ERP. This is a real-time operation, not a one-off data extraction. All the business logic is properly shielded from the data layer.
The thing is, the data we extract from those systems is always the same, but the systems change a lot depending on the customer, and so do their sources/tables/fields from where the data is extracted. We have seen dozens of ERPs to date, from SAP/Dynamics to a lot of small ones, and every time we make a new installation there's code to be done so that our system knows where/how to extract the data it requires. As I said, most are small or in-house ERP systems so it ends up being a one-off library that we can't reuse on the next customer.
We want to improve this, ideally to a setup where instead of data code, there is configuration where the ERP structures are mapped to our structures for each installation, but just thinking about it seems like a lot of work.
Is there an existing universal database/datasource mapper/translator to solve this kind of problem? Or standard pattern to use for developing this kind of thing?