We have a system that allows our clients to coordinate people (shoppers) so that they can delivery groceries within 45 minutes from the order creation.
Each client has a set of stores where the orders are processed by the shoppers
and each shopper has an schedule that specifies in which store and at what times he/she will be working.
However, we have also a feature that only allows them to create orders if the store is already configured in our systems and if there are enough shoppers at the time we expect to deliver the order.
As you can see, checking if a given order would be accepted in our system depends on the current time, configuration of stores and shopper's schedule.
We've done a pretty good job managing our source code, we do code review, unit testing and integration testing. However we've not found a satisfactory way of managing the configurations of the stores and the schedules and they are as sensitive as source code if there is a wrong configuration, for the client it would be almost the same as if we had a bug in our source code because we won't be letting them to create orders and their sales would decrease.
Thus we would like to find a way to manage the configuration of the stores and the schedules with similar discipline to what we do with our source code. we would like to have a way of testing if the configuration is correct. Right now we do this configuration via SQL scripts which are testable but the inputs might not be correct and we don't have a way of managing them or testing if they are correct.
Have you had a similar problem? Do you know any tools, languages or processes that will prevent us from making mistakes on the client configuration and to have a centralized way of knowing what is the actual configuration besides of looking at database tables?
By the way, we receive these configurations as spreadsheets from business people that talk with the client.