Multi-Tenancy for Franchises
Solution No. 181
Overview
Multi-tenancy allows more than one QuickBooks database to sync to the same Method company account. The company account gets divided into the main "head office" company account, and the "franchisee" tenant company accounts. Even though the franchises have new company account names, in reality they are all syncing to the same back-end as the head office and all other franchisees.
Who is multi-tenancy for?
- Franchisors who have many franchisees, each with their own QuickBooks database. Each franchisee syncs their QuickBooks database to Method and can see only their work. The advantage to the franchisor is being able to design screens that are instantly and universally available to all franchisees, without the need to copy the screens individually into each franchisee account. In addition, franchisors can create call center screens that search, insert and update records in multiple franchisee accounts, without the need to sign out and sign back in. It also allows franchisors to create consolidated reports.
- Method users who have more than one QuickBooks database can also setup a multi-tenancy environment. If you have multiple businesses, but you want to share data and screens across those businesses, go ahead and setup a multi-tenancy account - just be prepared to do a lot of advanced customization.
Note: while an existing company account can be converted to be the "head office" of a multi-tenancy environment, there is currently no way to transfer an existing company account to be a "franchisee".
How do I get setup?
To get setup, you'll need to contact us and ask us to enable this feature on your account. We'll convert your existing company account to a multi-tenancy environment.
How do I add new franchisees?
- Go to Customize > Users.
- Go through the process of creating a new user.
- In step 10 place a checkbox in Assign User to Franchisee. Note: if your company account has not been converted into a multi-tenancy environment, you won't see this option.
- Type out a name for a new franchisee next to Create a new franchisee.
- Click Add User or Add User & email invitation.
- The franchisee can now sync their QuickBooks file, using the franchisee name as their Company Account name.
- First time sync for QB Desktop - For each franchisee, install the sync engine as you would with a normal new account, enter your franchise's Company Account, User Name and Password and then click Connect.
- First time sync for QB Online - Have each franchisee go to https://www.methodintegration.com/testipp/connectia.aspx, click Connect, and Authorize the connection between their QB Online account and Method CRM. When they get to the sign up form, have them enter the Company Account, User Name and Password that you assigned them. The sign up form will recognize that this account already exists as a franchisee and will establish the initial connection.
How do I assign a user to more than one franchisee?
- Go to Customize > Users.
- Edit an existing user.
- Advanced to Step 6 of 10.
- Click Next again, taking you to Step 6 of 10 (continued): Access to Franchisees.
- Select which franchisees this user can sign into and access. By doing this you are setting up the user's "Permitted Tenant List".
How does pricing work?
- Multi-tenancy is only available for the Method CRM Pro version.
- Regular Method CRM Pro pricing applies (starts at $40 /user/month base, but can cost franchisees upwards of $65+ /user/month when premium level consulting and customization are included).
- There is no trial period on franchisees, you will be billed the same day that a franchisee is added.
- There must be at least one default user per franchisee. Otherwise a single user price will be charged for that franchisee.
- Concurrent pricing is not available - i.e. there is no shared licensing.
Customization basics
It should be noted that customizing a multi-tenant environment is an advanced concept. In most cases, franchisors will initially get setup with help of a 3rd party Method Solution Provider, or work with our customization team directly. However, if you are technically savvy and have the necessary time, you can take on this customization yourself.
- Each company account in the multi-tenancy environment is stored in a "Tenants" table.
- The Name field in the Tenants table corresponds to the company account name for the head office or franchisee.
- All other tables have a "TenantID" field. This corresponds to the RecordID value in the Tenants table. There is also a TenantID_RecordID field, which has the same value as TenantID.
- For example, if a head office has 0 customers and 3 franchisees, and the franchisees have 3 customers each, there will be 9 customers in the Customer table.
The Tenant table might look like this:
Name
|
RecordID
|
| HeadOffice |
1 |
| East |
2 |
| West |
3 |
| North |
4 |
The Customer table might look like this:
Name
|
TenantID
|
| Bob Crenshaw |
2 |
| Craig Crider |
2 |
| John Smith |
2 |
| Harry Rosen |
3 |
| Brad Smith |
3 |
| John Smith |
3 |
| May Cosman |
4 |
| Lucky Heart |
4 |
| Tom Johnson |
4 |
Note, that the name John Smith appears twice, but in different franchisees (2-East and 3-West).
- When a user signs in, they specify which franchisee they want to sign into. For the "Company Account" they'll use the name of their "franchisee" tenant company account.
- All dropdowns, grids, reports and calendars are automatically filtered to limit the data to only show records relating the TenantID that signed in. For example, if a user signed into the East franchisee, which is TenantID 2, they would only see Bob Crenshaw, Craig Crider and John Smith.
- If a record has no TenantID specified, then it is considered global, and shown to everyone.
What Value From Sessions options are available?
- "Multi-Tenancy- Current Tenant ID" - tells you the TenantID the user is currently signed into.
- "Multi-Tenancy- Permitted TenantIDs" - gives you the user's "Permitted Tenant List", a comma separate list of the TenantIDs this user has been given access to.
How do I see the franchisee name in a table?
- In the example above, it would be much easier to see the customers displayed like this, with the name of the franchisee:
Name
|
TenantID
|
Tenant Name |
| Bob Crenshaw |
2 |
East |
| Craig Crider |
2 |
East |
| John Smith |
2 |
East |
| Harry Rosen |
3 |
West |
| Brad Smith |
3 |
West |
| John Smith |
3 |
West |
| May Cosman |
4 |
North |
| Lucky Heart |
4 |
North |
| Tom Johnson |
4 |
North |
- For performance reasons, by default, each table shows you only which TenantID a record belongs to. However, you can add linked fields which show this information. Go to Customize > Tables / Fields, edit the table you want to see the Name in, and add a linked field, via TenantID, to the Name field in the Tenant table.
How does filtering work?
By default, objects will show only the records that have no TenantID or that match the TenantID the user signed in with. However, if you apply a filter that in any way specifies the TenantID, then your filter will override. Keep in mind that regardless of which filter you apply, records will still be limited to their Permitted Tenant List.
How does saving work?
- If no TenantID field exists on the screen, then new records will save using the TenantID the user signed in with. In the case of an existing record, if no TenantID field exists on the screen, then the original TenantID is preserved.
- If a TenantID exists on the screen, it is used as an override.
- Be careful when switching an existing record between different franchisees. It is not possible to move a record that has been synced with QuickBooks to a different franchisee without causing a conflict.
How does Retrieve Value From Table work?
- Very similar to filtering grids and dropdowns. If there is not a TenantID field specified in your "where", it will default to the TenantID the user signed in to.
- If you specify something like TenantID Not Equal To -1, then it will satisfy the requirement that you are overriding the automatic TenantID filter and that you know what you are doing. However, even if you override, it will still only show records that are accessible in the user's Permitted Tenant List.
- For example, imagine your multi-tenant environment consists of TenantID 1 (the head office), and 2,3,4 (the franchisees). The signed in user has been given access to TenantID 1,2 and 3, but not 4. Imagine also that the user has signed into the franchisee correlated to TenantID 2.
- Scenario 1: Searching the Customer table with the Retrieve Value From Table action, where TenantID Not Equal To -1, will give you all customers from tenant 1,2,3 but not 4, since this user does not have TenantID 4 in his Permitted Tenant List.
- Scenario 2: "Brad Smith" is a customer, and belongs to TenantID 3. Searching the Customer table with Retrieve Value From Table, for the customer "Brad Smith" where no TenantID is specified in the "where" will give no results back, since the user signed into TenantID 2. In order to get Brad Smith, if you knew the TenantID, you would specify the "where" to TenantID Equal To 3. If you did not know the TenantID of Brad Smith, you would specify the "where" to TenantID Is Not Equal to -1
How can I revert back to a normal Method Account?
We don't currently have anything setup to revert back to a non-tenant account. The best move would be to manually remove the tenants and all tenant related customization, then use the Head Office as the main account for all users. There is no harm in having a multi-tenant database vs. a single tenant one, the multi-tenant one just has more muscle.
| Created by | Paul J. on | Feb-10-2012 |
| Last modified by | Paul J. on | Jan-16-2013 |