Category Archives: Liferay

Liferay upgrade learnings – Part 1

Some learnings below from various Liferay upgrades that I have been part of:

  • Upgrades need us to plan various dry runs in advance on non-production environment
  • Divide your upgrade between core / database and non-core upgrade
  • Core includes Liferay engine, configurations and database
  • Non-core includes themes, custom code, integrations and such
  • Understand how to use database upgrade tool for core upgrade
  • Logging of upgrade should be at much more verbose level than normal
  • You can upgrade with document library or without it using portal-ext.properties configurations
  • Upgrades between DXP from 7.x to 7.x are easier whereas upgrades from 6.x to 7.x need more planning
  • For database upgrade tool, you have an option of 3 property files or you can use command prompt to enter required details
  • Make sure you are at the latest version of whichever 7.x you are upgrading to
  • Bad and corrupt data are perpetual problems which need to be analyzed properly before upgrade
  • Use groovy to fix bad data not SQL
  • Consider analysis and compliance from Liferay compatibility matrix, Liferay whitepapers on cloud, security, upgrade & scaling before planning your upgrade
  • Create a template document for upgrade with all major areas pre-covered in analysis via the whitepapers on Liferay.com
  • Understand the breaking changes with every major version release
  • Learn to use the upgrade planner for code upgrade
  • Docker containers are available and should be considered
  • Consider headless, clustering, cloud, advanced file store, CMIS repository options right at the analysis phase of Liferay upgrade
  • For your data storage requirements in future as per scaling – understand and analyze the load to confirm to the right choices of infrastructure like Cloud, SAN / NAS and so on
  • Learn to use the basic Linux commands (if you are using Linux) like top, free, tail, ps, grep, liferay bin commands, sudo, vim, thread dumps and such to monitor / manage the upgrade well
  • Look at top thread dump analyzers like: Smart Java thread dump analyzer – thread dump analysis in seconds (fastthread.io)
  • Consider learning basics of operating system / network you are using, JVM & database tuning / optimization for threads, core allocations, monitoring and using Eclipse IDE to analyze threads, heap, etc.
  • Keep reference guide for system.properties and portal-ext.properties handy during upgrade of core part
  • Keep headless, GraphQL, Liferay / Java API details handy during code upgrade
  • Explore 7.4 DXP features if you are upgrading to this version: Liferay DXP 7.4 New Features
  • Refer help center articles and open documentation both, they have lot of good, useful content
  • Reference: Upgrade Basics — Liferay Learn

Email me: Neil@HarwaniSystems.in

Liferay best practices – Part 1

Developers and managers both struggle at times to pre-plan usage of best practices in projects causing many problems which are best avoided. Providing below some learnings & best practices on using and working with Liferay – Part 1.

  • Don’t work directly on the Liferay database. Use the groovy script console in CONTROL PANEL or the Liferay User Interface. Use the database at the max as a READ ONLY tool for analysis and debugging – even this is for extreme cases when recommended like for problems in reindexing and such for BackgroundTaskTable or Lock_ as per Help Center articles only. Stick to Liferay APIs (REST or Java / Groovy – based) for right results. Changing anything at database level can have unintended consequences which are best avoided.
  • If you need a cloud offering, instead of deploying Liferay on AWS / GCP / Azure or similar on your own which can be a valid option, also consider and evaluate one of Liferay DXP Self Hosted, Liferay Experience Cloud Self-Managed or Liferay Experience Cloud. They are built on top of GCP with many advanced features pre-baked like CI/CD depending on the version you select. Liferay’s cloud offering decrease many of the efforts of upgrades, infrastructure, security, patches, CI/CD, monitoring and more depending on which option you select.
  • Use as many out of the box features as possible, followed by configuration and lastly customization. There are 100s and 1000s of direct and indirect features for Liferay available on it’s documentation site.
  • Support tickets are for Liferay product issues, reach out to Customer Success for short term engagements up to multi-month configuration, system administration, customization, audits and such areas. Global services is for executing projects, SME engagements to embed a Liferay expert into your team for technical help, team augmentation, custom packages to support upgrades, performance tuning, DevOps/Architecture kickstarts, long- and short-term customization development, etc. on Liferay. Reaching out to the right team maximizes chances of a fast resolution for your request. For support issues, refer this blog: https://liferay.dev/blogs/-/blogs/working-with-liferay-support
  • Maintain a DevOps / DevSecOps / Repository strategy. Use best practices of code merging, quality and more.
  • Maintain a list of customizations, custom APIs (REST) and modules that are deployed.
  • Consider headless if you want extreme performance or a very specific User Interface with a non standard JS library or you want to connect with an external app with Liferay as the engine or want a very high LightHouse score. Even without headless high scores are possible in most areas.
  • Understand LightHouse and PageSpeed Insights score. There are many hidden things which are NOT OBVIOUS – for example mobile performance scores. Consider investing in parallel into an in-house monitoring tool as well.
  • Upgrades need preparation and multiple dry runs. Bad data, orphan data and bad customizations create problems in upgrade. So use Liferay in the optimum way as per documentation.
  • Keep regular watch on End of Life support and premium / extended support phases. Pre-plan your upgrades by at least one+ years.
  • Lift and shift from in-prem to cloud is not a healthy approach using AMIs. Consider setting up Liferay again via backups if you are shifting to AWS/GCP/Azure from in-prem. Otherwise consider Liferay Experience Cloud, migration would still be needed though.
  • Search & database server should be monitored and optimized on routine basis.
  • Search optimization needs to be a regular habit by the Liferay Administrator as the content and documents get updated. Explore concepts like suggestions, boosting, queries, filters, blueprints and more.
  • SSO, Authentication, Authorization, Login and Security need advance planning and design. These topics vary widely from customer to customer.
  • There are many inbuilt apps in areas of collaboration, social, workflow, content, process, documents and more. Explore and use them before doing customizations.
  • Explore Liferay marketplace for technical & functional accelerators / solutions before investing in developing from scratch.
  • Maintain documentation for your architecture, design, customizations, testing, security, code quality and other areas.
  • Understand and study portal & system properties, they have many settings which can help in managing various scenarios directly by configuration only.
  • Explore Liferay University and trainings on it.
  • Clustered environments are possible in Liferay and consider planning for them right during your architecture, design phase at the start of project rather than later.
  • Consider usage of Advanced or S3 filestore, Clustering, Headless, Liferay DevStudio, Docker images of Liferay, Virtual instances and similar advanced concepts as need be from early in the project.
  • Understand Liferay architecture, tooling and internals like Portlets, OSGi, Liferay DevStudio, Configurations, Control Panel, Gogo Shell, Module projects, Dependencies, Modularity and such.
  • Your important directories and areas in Liferay are: Liferay Home and sub-directories, Filestore / document library – data folder, Custom modules, Configuration files in Liferay Home sub/directories, Search server, Control Panel, Database, Other peripheral configuration areas like load balancer, application server, networking, clustered environments and such.
  • Learn to use the Liferay forums, Liferay Blogs, Liferay GitHub, Liferay Help Center, Liferay Community site, Customer & Partner portals of Liferay well. Lot of useful information is available there.
  • There are in-built areas in the same integrated DXP installation from 7.4 onwards for Digital experience, Portal, Commerce with Analytics. Consider using them from DXP platform before doing customizations for features that are available already.
  • Explore concepts like debug patch, logging per module and overall logging in Liferay.
  • Reach out to community slack channel which can be a great way to further connect with Liferay resources.
  • Keep your portal & components updated with relevant patches & upgrades as per advisory from Liferay.
  • Refer Liferay resources page with case studies & whitepapers. It has useful information on cloud migration, compatibility matrix, benchmarking, what customers are doing with Liferay and more.

References:

  • https://help.liferay.com/hc/en-us
  • https://liferay.dev/
  • https://learn.liferay.com/dxp/latest/en/liferay-internals.html
  • https://learn.liferay.com/dxp/latest/en/index.html
  • https://help.liferay.com/hc/en-us/categories/5843406636941
  • https://marketplace.liferay.com/
  • https://www.liferay.com/liferay-experience-cloud
  • https://learn.liferay.com/dxp-cloud/latest/en/index.html
  • https://www.liferay.com/resources/case-studies
  • https://www.liferay.com/resources

Email me: Neil@HarwaniSystems.in

Notes on Liferay search optimization – Part 1

Notes on Liferay search optimization – Part 1.

There are two parts to search optimization in Liferay. One is the internal search and other is the SEO / Digital Marketing for content. Below, I am sharing concepts and keywords to explore for both areas.

Liferay internal search:

  • Search BluePrints
  • Search Insights
  • Custom Indexers
  • Tags & Categories
  • ReIndexing
  • Facets
  • Suggestions
  • Boosting
  • Sorting
  • Low level search
  • Search Options
  • Similar Results
  • Queries & Filters
  • Google Search console / Bing search console / Google Analytics analysis and feedback into internal search

Liferay SEO:

  • Open Graph
  • Friendly URLs
  • SiteMap
  • Robots
  • Meta Tags
  • LightHouse / PageSpeed Insights score
  • Google Analytics
  • PIWIK
  • Headless

References:

  • https://learn.liferay.com/dxp/latest/en/using-search/liferay-enterprise-search/search-experiences/creating-and-managing-search-blueprints.html
  • https://learn.liferay.com/dxp/latest/en/using-search/getting-started/search-overview.html
  • https://learn.liferay.com/dxp/latest/en/using-search/getting-started/searching-for-content.html
  • https://help.liferay.com/hc/en-us/articles/360029046411-Building-Search-Queries-and-Filters
  • https://learn.liferay.com/dxp/latest/en/site-building/site-settings/configuring-open-graph.html
  • https://learn.liferay.com/dxp/latest/en/site-building/site-settings/adding-a-new-analytics-service.html
  • https://analytics.google.com/analytics/web/
  • https://marketingplatform.google.com/about/analytics/
  • https://piwik.pro/
  • https://developer.chrome.com/docs/lighthouse/overview/
  • https://pagespeed.web.dev/

Email me at Neil@HarwaniSystems.in

Navigating Liferay as a Customer & Partner – Part 1

Single ready reference of important links for customers & partners of Liferay:

  • Where is the customer portal: https://www.liferay.com/customers
  • Where do I find the documentation – Version & Product wise: https://learn.liferay.com/
  • Where is the developer portal: https://www.liferay.com/developers
  • Where is the partner portal: https://www.liferay.com/partners
  • Where can I get online trainings: https://www.liferay.com/learning
  • Where are the blogs: https://www.liferay.com/blog
  • Where can I get the case studies: https://www.liferay.com/resources/case-studies
  • Where is the list of upcoming events: https://www.liferay.com/events
  • Where are the details for Subscription services: https://www.liferay.com/subscription-services
  • What is DXP: https://www.liferay.com/products/dxp
  • What is Liferay Experience Cloud: https://www.liferay.com/products/liferay-experience-cloud
  • What are the major Use-cases & Industries that Liferay caters to: https://www.liferay.com/ – Navigate to Solutions
  • Where is the MarketPlace: https://web.liferay.com/marketplace
  • Where is the resource library: https://www.liferay.com/resources
  • Where is the YouTube channel: https://www.youtube.com/user/liferayinc
  • Where is the LinkedIn page: https://www.linkedin.com/company/liferay-inc-/
  • Where do I raise a product request for technical support, licenses and similar points: https://help.liferay.com/hc/articles/360018414031
  • Where is the page for careers: https://www.liferay.com/careers

Why Liferay & what about my performance? – Part 1

An unbiased view on why you should adopt a platform like Liferay and what are the benefits in using Liferay:

  • Having implementations in various domains like insurance, manufacturing, financial services, healthcare, education, government, intranets, commerce, energy, customer / partner portals and more
  • Open standards based system built with and around Java & specifications from Java community
  • Tooling options built on top of Eclipse, Gradle and Blade
  • Gogo Shell & DevStudio
  • Has been contributing to ecosystem by community as well as enterprise versions regularly plus has cloud options with analytics & commerce
  • Modular architecture built using OSGi
  • Growing marketplace
  • Maturity of 10+ years in terms of having features in fine grained property file entries, IAM/SSO/AD/LDAP, programming & configuration options and similar inbuilt integrations, workflows, content management, system administration and more
  • Commerce, Analytics, Cloud option & Content / horizontal portal in the same ecosystem
  • Evolving features around Cloud, Personalization, CI/CD, Analytics, ML&AI with the trends
  • Large part of documentation is open for public reference
  • Growing community & partner ecosystem
  • Strong features around content, search, collaboration, chat bots, headless and more
  • Many security, clustering, optimization, workflow, content, configuration features are pre-built with past experiences and evolution for over a decade
  • Programmers & technical people love the open standards based understanding of the product ecosystem

How to overcome some of the challenges around implementing Liferay:

  • Read the official documentation, blogs, forums in entirety and refer non Liferay forums across the web, don’t read piecemeal – that does not help
  • If you struggle with SEO / page load performance problems look at various reports from across the web like GTMetrix, Pingdom and more rather than rely on a single tool and single geo based server. Think of functional, technical and other changes across configurations rather than only one area. Good part is as there is transparency with open standards and open forums, it’s easier to decipher what changes need to be made
  • To avoid upgrade problems, follow the official path for customization & configuration in conjunction with Liferay team rather than customize outside the official process. Also, use out of the box features as much as possible

Liferay case studies

Email me: Neil@HarwaniSystems.in

Keywords to search on Liferay – Part 1

Searching these keywords on Liferay will keep you updated on what’s happening in the ecosystem. Add “Liferay” in-front of these keywords & search the same. It’s a mix of technical & functional / product feature topics. This is Part-1 of the series.

  • Module loader
  • MVC portlet
  • Logging
  • Upgrade
  • Patch tool
  • Search filter
  • Hot fixes
  • Service packs
  • Search experiences
  • Objects
  • Commerce
  • Service Builder
  • Headless delivery
  • Extension
  • Clustering
  • Automated Live chat connector
  • SSO / IAM / Authentication & Authorization
  • Catalogs
  • Products
  • Store administration
  • Order fulfilment
  • Docusign integration
  • Workflows / Process automation
  • Themes
  • Templates
  • Database upgrade
  • Scheduler
  • DXP Cloud
  • Checkout
  • Search blueprint
  • Solutions
  • JavaAPIs
  • REST / JSON APIs
  • DevStudio
  • Performance tuning & optimization
  • REST builder
  • TagLib
  • Portlet filter
  • Custom search facet
  • Custom search filter
  • Workspace
  • Theme generator
  • JS generator
  • Open graph
  • Blade
  • GraphQL
  • Elastic Search
  • Users and permissions
  • Virtual instances
  • Public & private pages
  • Content authoring
  • CI/CD/Docker/Kubernetes
  • Collaboration & Social
  • Editors
  • Maven
  • Gradle
  • Gradle tasks
  • File storage
  • Bundles
  • Organizations
  • Search boosting
  • Search results rankings
  • Portal-ext.properties
  • System.properties
  • Redirection

Email me: Neil@HarwaniSystems.in