SiteWhere was not designed to support a multiple tenant architecture. While multiple sites can be created to logically separate things, there is no way to truly separate processing and data for multiple customers using the system side-by-side. Add multitenancy support including the ability to have a separate processing pipeline per tenant and a separate storage area for each tenant's data. This will include adding the concept of tenants to the data model and associating one or more tenants with each system user. The changes will affect the administrative UI since only one tenant's data can be edited at a time. It will affect REST services since a tenant authorization token should be passed to indicate which engine/data should be used. It will affect system configuration since a separate engine configuration is needed per tenant (user and tenant model remain global). It will affect the Spring XML schemas since global system settings need to be separate from tenant settings.