1. A method for managing a provider-tenant system where a provider communicates with a plurality of tenants over a network, the method comprising: receiving a plurality of data structures corresponding to a first tenant; determining which of the plurality of data structures are specific to the first tenant and which of the plurality of data structures are shared by the plurality of tenants; generating a tenant template that stores at least one data structure specific to the first tenant; and using the tenant template to generate a tenant database corresponding to the first tenant and storing the at least one data structure specific to the first tenant.