I am looking to multi tenant one of my applications but from looking at the guidance online there isn't a very clear view on the pro's and con's of using the default behavior of the platform. There are some questions that I have on the tools functionality:
1) Is it possible to have a user that is an application admin, who has visibility of the data for all tenants? Taking this further is it possible to have a user that has visibility of a subset of tenants data?
2) What extra benefits are there from using the platforms default behavior instead of creating myself a "Client" table, assigning a user with a Client and storing all client specific data with a clientid, therefore allowing a filter on each screen.
3) What is the easiest way to manage users created in application specific tenants? They don't appear in the Users module because they are not in the Users tenant. Do I then need to create the user management logic within the app itself?
In this link you have all about multi-tenant I believe that you will find the answers you looking.
Regarding the management you have this component.
Hope this helps.
Hi Daniel answering your questions:
1 - No it's not possible, a user is created per tenant. When you activate multi tentant option all your data stay in default tenant, tenant identifier is a string, let me give you an example, here in Brazil all companies has a CNPJ is a ID of a company which is valid throughout Brazil so in my Outsystems application using this as a tenant identifier is natural but this is a concept you can use any unique information that is important for you and separate your data. If you need to filter more you need to implement your logic to access subset of a tenant. On the question of the user, you can implement a logic that when changing between the tenants if the user does not exist in tenant you create a corresponding user in the tenant that you need to access. This is very easy to do.
2 - use platform Tenant logic is best for many reasons. First: You can build your application and decide in future to use it with minimal effort. Second: All objects are prepared for this so when you turn on multiple tenant support, Aggregate, Advanced Query, etc will understand this and will filter automatically the data including the queries the tenant information or pointing to the correct view in the database. Third: There is no reason to reinvent the wheel, you can use what is ready and perfect to meet you in is missing. Fourth: There are ready applications to manage Tenants and users of the same making it easy enough and these apps can be modified to implement new features too easily.
3 - Yes users are in Users table but Users app will show only users from default tenant. You can use application Multi Tenant Management, you can download it from http://www.outsystems.com/forge/component/461/multi-tenant-management/
This subject is vast and it is many other considerations and the information I gave you here and the documentation indicated above will greatly help if you have further questions do not hesitate to post here
Hope this helps and sorry for my english I'm learning.
Nuno and Alexandre thanks a lot for your help, both are going to help a lot with implementing this.
Needing just ask.
If I create tenant specific information and then delete the tenant, what happens to the data? Is it also removed? Are there any negative side effects of this not being removed that have been experienced?
Hi Daniel you can not delete a Tenant just disable it.