After a lot of research and testing, we've concluded that multi-tenant support is probably best implemented using the "All Tenants in a Single Database Schema" strategy.
However, taking this approach introduces its own issues; a key one is that each tenant usually needs to have their own sequence of entity identifiers; what we have termed “Pseudo PKs”.
We've developed a database and Hibernate compatible mechanism to nicely handle this.
User Self Sign-up and User management
If you are building a public facing application supporting end user Self Sign-up you'll need some common components; such as a signup page, with AJAX validations, domain and IP based validations, and with corresponding confirmation emails, etc.
Having a Business application support Self Sign-up can also take a burden off of application administrators.
We've also included ReCaptcha integration to make it more secure.
This component allows you to have Rule based messages, specific to application pages and model and application state.
Multi-tenant Backup and
Using the "All Tenants in a Single Database Schema" strategy is great because you only have one physical data model to maintain and backup. In a disaster recovery scenario, all tenants can be restored in a single action.
However, if a single tenant requests to have their database restored from backup, it becomes more complicated. So we developed SQL scripts for this purpose, and include them in our PRO Kit.
Project Glossary with
Bulk Update - with rules and permissions
For simple applications, changing data at a row at a time is OK. But it is a common requirement to allow users to filter to a specific set of rows and then to allow them to apply a Bulk Update operations upon that selection.
Inbound email Poller to create new
entities, and updates via email, with attachments
In our applications we allow email to be used as a form of an API. Specifically, we allow registered users to submit new items, or to make changes to existing items via email. This is great for allowing executives, and casual users to participate in the process with the tool they are probably most comfortable with.
Our Inbound email poller does just that. It also includes support for dealing with email attachments, and sending confirmation messages.
Rules and Permissions are also applied as emailed entities are inserted or updated.