Separate databases by Tenant
Application Type
Traditional Web

We have some potential customers in Canada and due to data residency requirements they want their data stored there. Our multi-tenant Outsystems app currently stores everying (all transactional data, etc) in a single platform database in the US. Another app (not Outsystems) elsewhere in our company solved this by using 2 database - one for US customer, another for Canadian (which is in Canada and connected to remotely via AWS VPC peering). Their US based application makes a determination at login time (using a separate user database) which region the user is in and connects them to that database for the duration of their session. Not the greatest performance connecting remotely to that Canadian db but it works. 

Any thoughts how we could manage US tenants in one database and Canadian in another in one Outsystems app? We'd want to be running the same codebase & db schema for both sets of users. We also would not want to lose all the data modeling and query capabilities using the platform database. I looked at the database catalog support in Outsystems but that seems to apply only at the app (not tenant) level. I also looked at the multi-tenancy document and it discusses physical segregation of tenants but again it appears we'd lose all the standard data modeling/query/schema update capabilities of the platform.  

We could certainly spin up another complete instance of our Outsystems app in Canada but there would be considerable cost and support overhead involved. I'd expect thats how we'll end up but wanted to see if anyone has any clever ideas. 

Thanks...

Hi Greg,

I suggest you check this one: https://success.outsystems.com/Documentation/11/Reference/OutSystems_APIs/PlatformRuntime_API#DatabaseConnection_SetConnectionStringForSession

I am not sure it works for you as I don't know your infrastructure, architecture, and license situations. 

I hope it works for you. 

Sincerely,
Necmettin

Community GuidelinesBe kind and respectful, give credit to the original source of content, and search for duplicates before posting.