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
In order to guarantee the data safety between these Companies, some principles must be used to provide virtual data silos:
- 1.Your Solution needs a
PersonObject Class, and a
- 2.A logged in User must be a Person, belonging to a Company.
- 3.All Object Classes (that are private to the Company) must have a reference to Company. This Object Class Property should be mandatory.
- 4.All Data Sources added to App Data are filtered against
Person (logged in).Company.
Filters on Data Sources are server-side. Thus, following these principles 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).Companyas reference for every Create operation.
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 for achieving this:
- 1.The Object Class
Companyshould have an Object Class Property for holding the Company Logo (
Company.Logo, pointing towards an URL or a File Object Class)
- 2.The Object Class Company should have an Object Class Property
Company Themewith Data Type Theme. You could either create a set of predefined Themes in Appfarm Create, or to create a seperate Theme for each Company.
- 3.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).
- 4.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 action node Set Theme to set the Theme to
Person (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 EntryObject Class Property to the
CompanyObject Class. You could then hide the Time Entry functionality from the App if
Person (logged in).Company.Enable Time Entry not equals True.