Some time ago Liferay Commerce has been introduced. First it has been shipped as a separate product. Then it got included in Liferay and no separate installation was required. For new versions of Liferay you do not even have to turn it on as it is turned on by default (you can still turn it off if you want).
If you use Liferay then you have probably already came across this new functionality but have you ever wondered - is this really useful and production ready?
I will try to answer this question in this post based on my personal experience.
Few words about my experience with Liferay Commerce and why did I even create this post?
You might wonder what kind of experience do I have with Liferay Commerce and why did I create this post in the first place. Let's start with the experience - I have worked with Liferay Commerce for about a year. During this year I've used probably every aspect of it - from the basics like channels, catalogs to things more detailed like price lists, relations of articles, detailed settings of shipping options and more. Not only I have used out of the box functionalities, but I also extended/overrode different parts of the system and looked into tons of different options to see how we can use what is already there for our particular needs (or to be more precise - for our customers needs). Especially with multiple interfaces with ERP systems we needed to support.
With all of that experience I feel like now I know it quite well, or at least fairly well given it is still quite a new product.
Because this is a new product and there are not too many people who could share their success (or failure) stories I thought I will at least share some of my thoughts. This way some of you who already use Liferay might be in a better position to decide if you should also use it for your company's shop site.
Pros and cons of Liferay Commerce
In my opinion Liferay based on their previous experience (including mistakes) has learned a lot, and they tend to do new functionalities much better, stable and easier to extend. This also includes the commerce connected modules - in general they work surprisingly good but of course there are also some downsides.
I will go through its few pros and cons, so you have better feeling what to expect from it.
Pros: Variety of options
To be honest I haven't worked with different shop engines like PrestaShop, WooCommerce, Magento etc. This means I can't fully compare the functionality between them and Liferay Commerce. I looked briefly on documentation of some of them but of course this doesn't make me an expert.
What I can tell you though is that the shopping configuration possibilities in Liferay Commerce are really impressive. Moreover, you can use the possibility to have different settings per instance / per site and, in commerce context, per channel. This means you can host one site meant only for B2C, another one only for B2B and third one could of course be B2X. You can have different shipping/payment/tax options for each of them. You can have different price lists applied for different customer accounts or accounts groups. You can have multiple catalogs which could be shared on different channels. You can have different flows, price types (net vs gross), different relations between products, payment/shipping methods and restrictions, different notification (emails) templates and many more.
I won't of course describe everything as it's not the point here. What I would like to say though is that I personally used many of these options and indeed the out-of-the-box functionalities seems to be production ready. Of course, you can still have specific needs. This is a standard thing for big projects. The good thing is that extensions options are huge and quite simple to do.
Many developers I've worked with have the feeling that documentation has never been a strong side of Liferay. Luckily, at least in my opinion, it has changed quite significantly recently. With new, revamped documentation I feel it gets much better. Regarding Liferay Commerce the documentation describes not only basic stuff but also shows examples of how to implement things which are less popular like custom tax engine , new payment method and more.
Pros: Extending options
Like I mentioned before - the documentation describes quite a lot of options of extending Liferay Commerce. If you have worked with portal before and if you have extended it you probably already know that there are variety of options for overrides/extensions: fragments, portlet filters, custom implementations of services leveraging OSGI etc.
All of these things still exist, and you can use your knowledge with Commerce modules as well. Moreover, the design of newly developed modules is, in most cases, created in a way that creating the overrides are even simpler than before. For example many tables use the Clay datasets which makes it easier to change tiny things - you don't have to touch the JSP view but instead you can just override Java components. It's quite convenient in many cases.
Having said all of that, be prepared that you will still have to take a look on the Liferay sources to find extensions points.
Nevertheless, I would say that possibilities of extensions and ease of doing them is one of the biggest advantages of Liferay. Both for the standard CMS and the Commerce modules.
Pros: Liferay huge ecosystem
If we talk about the biggest advantages of Liferay another thing that comes to my mind is huge ecosystem of Liferay itself. Implementing a shop is one thing but there is a lot Liferay can offer beside that.
- You need regular content pages? No problem. Just use standard CMS functionalities
- You need advanced workflow for creating content? You've got it.
- Advanced users/organizations/permissions options? Of course!
- Multitenancy? Well I even wrote an article about that.
- Integration with LDAP for synchronizing the users? Or perhaps SSO made with Kerberos or SAML? Sure!
Basically everything I wrote about advantages of Liferay and many other things I haven't (because there are so many) applies to Commerce as well as, after all, it's the same product.
This is huge advantage. Especially if you're providing portal (/shop) to multiple customers/suppliers and everyone has a slightly different requirements.
Cons: Some issues / poor design still happens
While they fix issues quite regularly and that's a definitely a pro, there are still some things which were not designed too well. Example? Here is one but it requires a little introduction.
Generally in Liferay there are some built-in shipment methods. For now these are FedEx, Flat Rate and Variable Rate.
The variable rate and flat rate can contain some additional options. Meaning the method is variable rate but the particular option can be anything you want - for example you can have: "Self pickup", "Carrier", "Carrier express". For each option you can set up costs for this option based on the weight of the order, destination and warehouse. This is really great out of the box functionality. The issue? Well in the early versions of 7.4 the shipping option picked for order hasn't had any key or ID reference. Only the shipment option name was saved in the database, and it was saved for language in which the checkout has been made... Problem? Well name of the option can change. It's a totally configurable thing, so you never should depend on it.
This thing has been fixed but if you are like me and have a huge project which you don't upgrade every month or two, because of costs and time restrictions, then you have to stick with that.
Of course, it can happen in any product, but I believe it should not happen in such core functionality especially that it is not some issue introduced by a mistake but has been in Liferay Commerce for a long time.
This might be surprising but Liferay still is not fully mobile friendly. Of course, I think no one would expect that they make the whole administration panel responsive but at least the things meant for end-user should be responsive. Sadly they are not. Even the Liferay Commerce which is kind of new product has some issues.
Examples? Here are some:
- Products list in checkout summary step
- Accounts management - list of accounts
- Placed orders list
Basically Liferay still has an issue with proper, responsive display of lists. What we get is simple horizontal scroll for the list. That's a shame in my opinion as there are better solutions. You might be able to make it look better with only styling in theme but some solutions might also require changing the HTML structure which would require using JSP fragment, which is not exactly recommended as it makes the further Liferay upgrades harder.
Of course for some projects it might be enough. I've spent a lot of time for lists display changes though.
Just to make it clear - I even tried the newest Liferay version (184.108.40.206-ga44) to check if maybe it looks better now, but it's not.
Liferay is not the most popular CMS nor shopping engine. There are a bunch of companies using it and being happy about it but the fact is that its market share is not too high. Or to be more precise it is quite low. This also means that the community is rather small. Often you might not get the help you need, or you will get it after long time. This means more time spend on debugging of the core code.
I feel like this is getting a little better though - especially on Liferay's official Slack which I highly recommend. From my experience questions asked there gets much more answers than the ones asked on the forum. Still I can see that many questions, mostly the harder ones, gets unanswered. With more popular systems there are more people experiencing the same issues and higher chance to get an answer.
Cons: It's still Liferay - most likely not for small business
Like I have already mentioned in one of my previous articles about pros and cons of using Liferay I think Liferay in general is not for small business. With Liferay Commerce it's the same story.
Why? Mostly because of small community (see previous point) which makes it hard to find answers for your questions. Another thing is that you won't find too many plugins so if you can't make something using out of the box functionality and you are not developer yourself then you will be forced to hire someone to extend the portal for you. Of course that's the case with any other solution but the thing with Liferay is that it is not too common which also makes it harder to find employees or contractors who know it. This means slightly higher rates as well. Of course, it still can make sense to use Liferay & Liferay Commerce! It's just probably not what you want if you're just a tiny business with two or three employees and your budget is not too high.
In my opinion usage of Liferay Commerce makes sense. In some cases it might be actually a great solution. Having said that, in small projects I would not decide to use it, unless you already know Liferay or have Liferay team. Of course after all it all depends on your specific needs. I just wanted to give you some overview which I hope can help you to make a decision if you should even take it for consideration.
If you have some more questions feel free to contact me at [email protected] or through my LinkedIn.