As already mentioned in my introduction, a simple definition of a multitenant system that includes all the implications of the technology behind it would be the following: “A system which is shared among many customers, but that behaves in a flexible way and operates as if it is not shared with anyone else”. As I also pointed out, I believe this is not something trivial. Here you’ll find some technical aspects of a multitenant system that explains why.
All for one, one for all!
The same way The Three Musketeers used to live by the motto “un pour tous, tous pour un”! a multitenant system is a combination, of three basic (core) features that separately are not very differential but jointly are very powerful:
• Data security and data sharing
• Process sharing and object orientation
As in the case of the three inseparable friends Athos, Porthos and Aramis, each one is very important to the other. The multitenant principle will just be achieved when we manage to get the right combination of these three elements. I could write several pages to describe the benefits, but for the time being I will try to summarize each of them just enough for someone to get a clear understanding of the general concept.
Data security and data sharing
Data security is critical and basic. So essential that we assume that a system without a role based scheme, auditory, etc., is not qualified to support virtually any multitenant environment. You’ll need common security roles to meet the majority of the security use-cases you might come across. To save time in security management, common definitions should also be shared among all customers connected to the platform. This drives us directly to the concept of data sharing, since role definitions are data in the backend repository. Also, data sharing makes it possible to create, for example, a report across different companies of a large organization. In a multitenant environment you can quickly create reports consolidating data from different companies like a real-time worldwide employee headcount.
Process sharing and object orientation
In a multitenant system and similar to data sharing and data security, processes follow the same principle. They should be defined and shared among different customers who could reuse common processes or only adjust some aspects of those processes. In special cases a new process can be created for a group of companies and then eventually be promoted to be available at a global level to be shared among different customers.
This brings me to introduce here the concept of object orientation. As you can imagine, processes and objects share many concepts and in fact you can associate a process to a business object. A common process (or in other words an object) could be defined as a ‘parent’ object. A process adapted to a specific customer could ‘inherit’ the parent object properties and contain some specific customer behaviours. This object oriented technological features are related to the next topic.
One of the most important aspects of a multitenant system is its flexibility. A customer may request specific and unique changes to a process making it no longer be suitable for general sharing. The main problem here is that we want to reuse some aspects of this common process but also add these changes to accommodate these specific client requests all while maintaining the lifecycle and reusability of the pieces involved. We also can’t forget our commitment to other clients using these processes and must ensure no negative impact on their use of this same functionality. The question is how can we manage this incredibly complex situation?