In a project of the fictitious company FastChangeCo there are several parallel working agile teams. Both design data models for their UseCase.
However, the speed at which the data models are rolled out from the development to the test and production environment is different.
In GIT each team has its own repo (Repo A and Repo B) and for the TEDAMOH ExMeX framework there is also a GIT repo (Repo X).
This leads to the following situation:
Team A has deployed its data model (DDL and metadata) via GIT (Repo A) to the development environment and thus entered it in /etc/config/ConfigMetadataCompleteInstallation.sql (located in Repo X, will also be deployed).
Team B is now designing a new data model. Team B also deploys this model via GIT (Repo B and Repo X) to the development environment and thus entered it in /etc/config/ConfigMetadataCompleteInstallation.sql.
The installation of the metadata on the development environment still works because the Team A data model is already on the development environment and the Team A metadata is available.
Team B deploys its own data model to the test environment shortly afterwards. Team A hasn't done this yet. The installation routine expects the directory for the metadata that Team A has added to /etc/config/ConfigMetadataCompleteInstallation.sql. However, this is not yet available.
Solution of the situation:
Team A and B each create their own ConfigMetadataCompleteInstallation file in their respective GIT repo for their own data models:
- Repo A: /etc/config/ConfigMetadataInstallationRepoA.sql
- Repo B: /etc/config/ConfigMetadataInstallationRepoB.sql
The /etc/config/ConfigMetadataCompleteInstallation.sql (Repo X) refers to the respective GIT-Repo specific files:
:r "/etc/config/ConfigMetadataInstallationRepoA.sql" "/etc/config/ConfigMetadata".
After creating a GIT-Repo specific file, it must be rolled out to all environments for the metadata installation routine to find the file (even if it is empty).