Greetings, all. Need some direction regarding handling solutions within the Dataverse and finding this to be a bit of a brain-bender. I'm looking to create multiple apps that share "components" (e.g., flows, tables, environment variables). I've been reading the MS docs on segmented solutions and organizing solutions and am struggling to make sense of it.
Here's an example. Let's say I have two canvas apps that both use Dataverse tables. I also have some flows that each app uses. The Process Log flow (#1) and the Customer table (#2) are both used across multiple apps, and #1 is going to be used by all apps.

Should I be creating them all in one solution? But if I do that, how can I then deploy only the changes to one app but not WIP on another (selective deployment)? Or, should I be creating two solutions (Sales App and HR App) but then store the tables and flows in one/two other solutions? Thinking that way because of this MS doc:
Don’t have two different solutions in an environment where both contain tables. This is because there are frequently risks of a single relationship between tables, which creates a cross-solution dependency and causes solution upgrade or delete issues in the target environment at a later point in time.
Of course, I thought the whole idea of solutions was you add everything needed for an app and then deploy it in one fell swoop... 🤔 Whatever I do, I want to ensure with our solutions that:
- Developers don't create conflicting changes to the same objects (e.g., Solution A tweaks Table 1 this way but Solution B tweaks Table 1 that way).
- Updates can be checked in and deployed based on their readiness (e.g., I have work in progress on the Customer and Employee tables, but I only want to deploy the Customer table in this deployment).
Basically, I need help! Thanks in advance.