Help understanding a multi-tenant configurable application

Hi All,

I’m new to Servoy and have been reading lots of documentation, haven’t yet worked with it hands-on. I understand that Servoy is multi-tenant from the ground up. One of the things I haven’t seen are Servoy design strategies for an ISV to develop a single-application that can be shared among all tenants and then have tenant-specific customizations/configurations. From that point forward, how can each tenant individually configure the base application while still accepting fixes/enhancements from the base that the ISV supports?

Take Contact Management for example:
ISV does Contact Management and develops a particular data model, UI, and supporting business logic that is shared among all tenants. Now what does it look like when a particular tenant needs to add tenant-specific attributes to their “version” of Contact, add those attributes to the Contact input form, and add business logic to support those attributes? Are tenants copying/cloning such that they no longer get fixes/enhancements from the base Contact Management app that the ISV supports? Does the response change if the tenant needs to tweak something about the “base”, ISV-delivered app, as opposed to simply adding on it?

With this in mind, are there existing documents/posts that describe this relationship between an ISV and its tenants with respect to tenant-specific customizations/configurations to the “base” application?

Thanks,

Eric

Hi Eric,

I’m also developing a multi-tenant application, and am facing some of the same issues.

There is a component called the Servoy Security Framework that is available on servoyforge.net. It adds some user and tenant-related tables which in theory allow you to determine which tenant is taking an action, and adjust accordingly.

For example, it’s possible to show or hide a field in a data entry or table view form, so if you detect a user from a particular tenant, you could show that field when they view the form. Or you could use a different form for that tenant to perform data entry. You can also execute specific code, and add table-wide restrictions that limit the records found by a search to that particular tenant’s records.

I am having some issues with the Servoy Security Framework that I haven’t been able to resolve.

For example, the framework uses integer keys, but the rest of my application uses UUID keys, so the triggers don’t log the user ID on the record that they have changed. I don’t think I can get the tenant ID, to apply the restrictions. I’m also wanting to move the tables out of a separate server that the framework creates (“servoy_security”) into my own server.

There doesn’t seem to be documentation on how to use or adapt the framework.

If anybody has any experience doing these tasks, I would appreciate hearing from them. And if you find anything, please let me know.

Thank you,
Don