I am considering modifying Merchello to support multi-tenant. Before I head off and do this, I wanted to broach the subject of incorporating the code into the Merchello code base. My reasoning is that I would want to partake in the code updates of other users to other functionality.
To modify Merchello to support multi-tenant, I see two options:
Add an integer value StoreId to all tables and code. (Preferred as there would not be the need to do cross database queries to relate content pages to Merchello content)
Use separate databases per store, use context to switch connection string.
Both of these would require the following:
1. Add a bool config for multi-tenant to top level node behavior.
2. Inject Store Node Layer at top level of Merchello when multi-tenant is enabled.
3. Set store context when both editing and reading.
4. Allow sites to be associated to a store. A site could sell products from only one stores. A store could be used in one or more sites.
5. Modify Examine Indexes to create one index per store.
6. Modify Merchello use of Membership to create an adaptor. Umbraco Membership does not support true multi-tenant, therefore needs to be able to use a different membership provider.
I am confident that I can do this without negatively impacting other projects. Before I head down this road, however, I would like some feedback that it would likely be included in the code base if the code meets a reasonable quality level.
Please let me know what thoughts there are on this.
I like the approach of having a store context - this will make things easier in the back office but there are going to be some challenges (like controller which Umbraco users have access to which stores, etc.).
I also think it would be better to keep everything in the same database and use a GUID identifier rather than an int value so that we have an easier time getting the thing running on UaaS (mapping int values between environments) will be tricky.
I'd be happy to coordinate with you and work out issues when they pop up. Something on this magnitude will likely have quite a few breaking changes so we would wind up rolling it out as a major version . Ping me on twitter and we can setup a time to chat / coordinate.
Merchello Multi-Tenant
I am considering modifying Merchello to support multi-tenant. Before I head off and do this, I wanted to broach the subject of incorporating the code into the Merchello code base. My reasoning is that I would want to partake in the code updates of other users to other functionality.
To modify Merchello to support multi-tenant, I see two options:
Both of these would require the following: 1. Add a bool config for multi-tenant to top level node behavior. 2. Inject Store Node Layer at top level of Merchello when multi-tenant is enabled. 3. Set store context when both editing and reading. 4. Allow sites to be associated to a store. A site could sell products from only one stores. A store could be used in one or more sites. 5. Modify Examine Indexes to create one index per store. 6. Modify Merchello use of Membership to create an adaptor. Umbraco Membership does not support true multi-tenant, therefore needs to be able to use a different membership provider.
I am confident that I can do this without negatively impacting other projects. Before I head down this road, however, I would like some feedback that it would likely be included in the code base if the code meets a reasonable quality level.
Please let me know what thoughts there are on this.
Thank you, Jonathan
Hey Jonathan,
I like the approach of having a store context - this will make things easier in the back office but there are going to be some challenges (like controller which Umbraco users have access to which stores, etc.).
I also think it would be better to keep everything in the same database and use a GUID identifier rather than an int value so that we have an easier time getting the thing running on UaaS (mapping int values between environments) will be tricky.
I'd be happy to coordinate with you and work out issues when they pop up. Something on this magnitude will likely have quite a few breaking changes so we would wind up rolling it out as a major version . Ping me on twitter and we can setup a time to chat / coordinate.
is working on a reply...