Multitenant applications with tenant specific UIs and workflows.

  

Hello All,

I am working on a multi-tenant OutSystems web application. The Multi-tenancy aspect poses some challenges and I would like to hear from people who have worked on Multitenant OutSystems applications.

I would need some general suggestions and also some specific suggestions to the specific problems in my project.

Specific problems I am facing:

1. The customer expects that the UI elements be dynamic/tenant specific. Example: say I have a tabular grid on the main dashboard. TenantA may want to have the columns X and Y. TenantB may not want column X. So, every tenant would need to be able to configure what columns they would want on the main grid on the dashboard.

2.  The tenants would also need similar facility on form inputs. Say - they are creating a new record by submitting a form. The user would have certain fields to fill up. There would be some fields which are common and required for all tenants. But, some fields would be not applicable to certain tenants. So - at runtime, I need to decide which UI fields on the form to render. What would be the recommended way of creating such forms which are tenant specific?

3. There is also a requirement that the workflows for tenants be configurable and be tenant specific. So - for example: one tenant requires two step approval, another tenant has one step approval, another tenant may have different policy on second approval rejection etc. Would we be able to create a "meta" BPT model? Or would we be better off - creating multiple BPT workflows and just trigger the appropriate workflow based on the tenant? Creating multiple BPT workflows has the drawback that - when new tenant is onboarded - the workflow will have to be created. Also the workflow would have to be changed when the tenant decides to have a different policy for the approval workflow.


I understand I have mentioned many problems in one post. However, all these problems come from the users expectations of "a multi-tenant, configurable application  which does not require constant development changes" and is "self-governable and maintainable by the business analysts/admin."

Has anyone worked on these kinds of problem statements in Multi-tenant OutSystems web application?

If yes, please do share your experiences and your technical suggestions, what approaches you followed etc.



Chetan,

I've not yet worked with multi-tenant in this way yet (tenant specific workflows and fields etc).
But we are starting with exactly that next week. Our current approach idea is to have an entity that keeps track per tenant what they see and what they don't as they will (among other things) have customizable dashboards.

So an entity (or entities) that specify the order and visibility of webblocks, workflows, fields etc.



Kind regards,
Eric

Eric Bulters wrote:

Chetan,

I've not yet worked with multi-tenant in this way yet (tenant specific workflows and fields etc).
But we are starting with exactly that next week. Our current approach idea is to have an entity that keeps track per tenant what they see and what they don't as they will (among other things) have customizable dashboards.

So an entity (or entities) that specify the order and visibility of webblocks, workflows, fields etc.

Kind regards,
Eric

Hello Eric,

Yes, tracking these things in an Entity makes sense. And also exposing this entity via a UI for the admin to be configurable is doable.

However - my concern is : the main UI logic will become heavy with respect to database calls. On every column/UI widget, we will have database calls to determine visibility (whether the field should be hidden or not ). I presume it would degrade the performance and make the system feel slow.

The UI fields visibility problem can be solved by tracking it in a entity.

But - I dont see how I can do that with a tenant specific workflow (BPT model)


Eric Bulters wrote:

Chetan,

I've not yet worked with multi-tenant in this way yet (tenant specific workflows and fields etc).
But we are starting with exactly that next week. Our current approach idea is to have an entity that keeps track per tenant what they see and what they don't as they will (among other things) have customizable dashboards.

So an entity (or entities) that specify the order and visibility of webblocks, workflows, fields etc.


also put in this idea to be able to assign specific themes to tenants etc

Kind regards,
Eric


Our projects seem to have similarity , and similar challenges:-)

Our customer also expects that the themes be tenant specific. Although we can implement tenant specific CSS - it would require defining the logic on our own and overriding the stylesheets. I have implemented it. But the customer expects - that there could be a way where they could totally allow the tenant to set their own theme.



It would require some additional calls yes. But you can streamline this, you only need to fetch the data once in the preparation for example.

I've not used the BPT model that often but I assume you can get away there with some switch statements with the same ideology of having an entity dictate which path to follow

Chetan Yewale wrote:

Eric Bulters wrote:

Chetan,

I've not yet worked with multi-tenant in this way yet (tenant specific workflows and fields etc).
But we are starting with exactly that next week. Our current approach idea is to have an entity that keeps track per tenant what they see and what they don't as they will (among other things) have customizable dashboards.

So an entity (or entities) that specify the order and visibility of webblocks, workflows, fields etc.


also put in this idea to be able to assign specific themes to tenants etc

Kind regards,
Eric


Our projects seem to have similarity , and similar challenges:-)

Our customer also expects that the themes be tenant specific. Although we can implement tenant specific CSS - it would require defining the logic on our own and overriding the stylesheets. I have implemented it. But the customer expects - that there could be a way where they could totally allow the tenant to set their own theme.




Yeah I put in this idea to be able to assign specific themes to tenants etc.
Opting for SCSS integration which would allow us to develop applications in such a way that tenants have some control over the theme without having to build a complicated webblock with the overriding css in an unescaped expression