Multisite in Episerver Commerce

It seems that we currently have an increasing number of questions regarding multisite feature in Episerver Commerce. It’s fully supported in CMS. You can have only one site, one database to serve multiple domains – which of course reduces the cost. But can it be done in Commerce as well?

The answer is (as almost always): it depends on your definition of “multisite”: multisite can be that customers see multiple domains, which probably different styles, but in the backend everything is the same – you share the same collection of orders and customers. Or multisite can be that there is a separation in backend: each site has its own collection of orders and customers.

The first one is easy enough – and I believe it has been done in several sites. The most common technique for that “multi site” is to have multiple catalogs, and each site in CMS we use its specific catalog. All sites will share same warehouses (although it’s quite easy to limit that, because you can limit the warehouses you use in your catalogs), shipping methods, payment methods, customers, and orders – in other words, they share same backend. When a merchandiser logs in, he/she can see everything – orders placed in site A and site B, customers registered in site A and site B. There are some techniques to limit some of these – for example you can make customers from site A to only use FreeShipping, while in site B they can select between FreeShipping and ExpressShipping. Or you can distinct orders made in site A and orders made in site B (for easier handling). But in the end, it’s just one site and merchandisers can see both.

The second one is much, much trickier. You would probably want when a merchandiser logs in to the site, he or see can only customers/orders that registered/made on the site he/she was assigned for. So merchandiser A can only see catalog/orders/customers in site A, not site B, and vice versa. Can it work?

Probably not.

There was a concept of multi-tenant in Episerver Commerce, but it was not completed, and it has never truly worked. In fact, it is gonna be removed in Commerce 11. If you wonder – it’s the ApplicationId that appears almost everywhere. But not for long.

I heard some partners have gone great length to make multisite concept works with Episerver Commerce, but no doubt it’s major customization, and might incorporate some hacks and tricks. For starter, there is (almost) no access right for catalogs – you can give an editor access to all catalogs, or none at all, but you can’t let someone see catalog A and not B. Same goes to orders and customers. You might customize Commerce Manager to do that, or at least to make it works to some extend, but again it’s not an easy task (or even joyful!)

Update: The catalog permission handling has been implemented in Commerce 11.6. Now it’s possible to give someone access to catalog A, but not B, and vice versa. This is, however, only in Catalog UI, not Catalog Management in Commerce Manager.

So TL;DR: it’s possible to make one Episerver Commerce site to serve multiple domains and appear to be several sites, but it’s actually one site in the backend. To make it work as several sites in the backend, however, is almost impossible.

2 thoughts on “Multisite in Episerver Commerce

  1. Hi Quan Mai,

    I came across this article when searching for a solution to separate access right to catalogs/orders/customers for different sites. This is very insightful and clears out several of my questions about the topic. Thanks.
    Since the time you wrote this, has there any change in Episerver in terms of allowing segregation of catalogs/orders/customers per site in Commerce Manager? If not, do you know if this is something planned in the road-map?

    Thanks,
    Cheers,
    Hung

    1. Hi, apologies for a very late reply. Commerce Manager has already been considered as legacy, so no new development will be prioritized. I don’t think Commerce team will add such feature, nor anything is planned

Leave a Reply

Your email address will not be published. Required fields are marked *