Data silos and White labelling
Appfarm Create may be used to create SaaS solutions, targeting different companies. In most such cases, these companies may be competitors, and the requirement for separating the data is very strict.
All Appfarm Solutions come with separate databases. But only 1 database for Develop, 1 for Test and 1 for Staging/Production. We do not offer multiple databases
To guarantee the data safety between these Companies, some principles must be used to provide virtual data silos:
Your Solution needs a
Person
Object Class, and aCompany
Object ClassA logged-in User must be a
Person
, belonging to aCompany
.All Object Classes (that are private to the Company) must have a reference to a
Company
. This Object Class Property should be mandatory.All Data Sources added to App Data are filtered against
Person (logged in).Company
.In addition to 4) you might want to enforce the same data silo principle on the permissions level - please read the article on Conditional Permissions.
Filters on Data Sources are server-side. Thus, following these principles combined with Conditional Permissions will create virtual data silos for App Users. Having the Company
-property required on all data to be created, forces the developer to select Person (logged in).Company
as reference for every Create operation.
White labelling
White labelling may easily be offered for a solution created in Appfarm Create. In such cases, you would both like to follow the principle above regarding Data silos, but you would also offer the Company (the customer) some feeling of personalization when logged in to the Application, such as having your Company logo and colours.
We suggest the following to achieve this:
The Object Class
Company
should have an Object Class Property for holding the Company Logo (Company.Logo
, pointing towards a URL or a File Object Class)The Object Class Company should have an Object Class Property
Company Theme
with Data Type Theme. You could either create a set of predefined Themes in Appfarm Create, or to create a separate Theme for each Company.You need some App where Company Logo would be uploaded, and Company Theme can be set - for each Company. This can be done in the Registration-app (if companies sign up themselves) or in some Administration.-app (if you sign up companies centrally).
Inside your App (to be white-labelled): Display the Logo by Data Binding to
Person (logged in).Company.Logo.File Content.
The Theme may be set from the On App Load action (defined in App Settings). This action should use the action node Set Theme to set the Theme toPerson (logged in).Company.Theme
.
Note that it is also possible to differentiate functionality by Company. But we recommend to minimize this. For example, if you are to differentiate whether the "Time Entry" feature should be enabled for a given Company, you could add an Enable Time Entry
Object Class Property to the Company
Object Class. You could then hide the Time Entry functionality from the App if Person (logged in).Company.Enable Time Entry not equals True
.
Last updated