I would recommend moving the security logic to Entity Access with XPath constraints. Microflow filtering is useful for UI/data filtering, but it should not be the main security mechanism because it can easily be missed in another retrieval.
A simple approach would be:
I would also recommend using associations to Company and Region rather than storing Company/Region as strings on every entity. This makes the XPath security more reliable and easier to maintain.
For example, conceptually:
Normal users: Can only see data belonging to their own company.
AccessRegion: Can see all data belonging to their region.
AccessAll: Can see all data without company or region restrictions.
Since Mendix combines applicable entity access rules, Reader + AccessRegion can get Reader functionality with Region-wide visibility without creating roles such as ReaderRegion, EditorRegion, etc.
So my approach would be:
Entity Access = security
Microflow/page filtering = UX/business logic
Did you see https://marketplace.mendix.com/link/component/120716 ? Not completely the same use case but it might be a nice starting point.