Hi Michael, good question. You can either Pull or Push data between containers. Where pull is the "default" meaning that applications in a container (ex HR) can access and pull data from the system container by using function call LoadContainerGlobalVariables('NorthWind','QVD') this creates a global variable link to NorthWind container (vG.NorthWindQVDPath). This method should be used as long as HR have security access to the data inside NorthWind container. The Push option only applies when the business do not have access the system container but still need some of that data. For this we have created the QVDMigrate function call that will push data (qvd, fields, scramble sensitive data) to the HR container from NorthWind.
In your case best practice is to create a System Container for each of your sources, put qvd loader and connection string in each of them (if you use qvd loaders). Create a single "company" container and pull the needed data from the sources by using the LoadContainerGlobalVariables function. This will create a very easy to understand structure, you will have the LoadContainerGlobalVariables in the beginning of the apps so that newcomers understands what data sources the apps are using, and the scripts becomes easy to read. Also use Global Variables in the "Home" Container to put the business logic. Folders in the containers not needed can be removed (like Mart, Import,Export).