{"id":1163,"date":"2023-11-20T14:11:26","date_gmt":"2023-11-20T08:41:26","guid":{"rendered":"https:\/\/www.techandtrain.com\/blog\/?p=1163"},"modified":"2025-10-22T14:52:14","modified_gmt":"2025-10-22T09:22:14","slug":"what-are-some-of-the-best-practices-for-liferay-using-three-separate-gpts","status":"publish","type":"post","link":"https:\/\/www.techandtrain.com\/blog\/2023\/11\/what-are-some-of-the-best-practices-for-liferay-using-three-separate-gpts\/","title":{"rendered":"What are some of the best practices for Liferay? &#8211; Using three separate GPTs"},"content":{"rendered":"\n<p id=\"ember3679\">Generated using my GPT &#8211;&nbsp;<strong>Liferay Guide &#8211; Via official sources of Liferay<\/strong>:&nbsp;<a href=\"https:\/\/chat.openai.com\/g\/g-4G5XuBdpL-liferay-guide-via-official-sources-of-liferay\">https:\/\/chat.openai.com\/g\/g-4G5XuBdpL-liferay-guide-via-official-sources-of-liferay<\/a><\/p>\n\n\n\n<p id=\"ember3680\">Adhering to best practices in Liferay ensures that you leverage the platform effectively for enterprise solutions. Here are some key best practices to consider:<\/p>\n\n\n\n<p id=\"ember3681\">1.&nbsp;<strong>Modular Development<\/strong>: Embrace Liferay\u2019s modular development approach using OSGi. Develop customizations in modules, rather than monolithic plugins, for better manageability and upgradeability.<\/p>\n\n\n\n<p id=\"ember3682\">2.&nbsp;<strong>Use Liferay\u2019s APIs<\/strong>: Leverage Liferay\u2019s extensive APIs for custom development. This ensures compatibility and takes advantage of Liferay\u2019s built-in features and best practices.<\/p>\n\n\n\n<p id=\"ember3683\">3.&nbsp;<strong>Front-End Development<\/strong>: Utilize Liferay\u2019s front-end frameworks (e.g., AlloyUI, Liferay Clay) to maintain consistency in UI\/UX design and to ensure compatibility with different browsers and devices.<\/p>\n\n\n\n<p id=\"ember3684\">4.&nbsp;<strong>Performance Tuning<\/strong>: Regularly monitor and optimize performance. This includes database tuning, proper caching strategies, and optimizing assets like JavaScript and CSS.<\/p>\n\n\n\n<p id=\"ember3685\">5.&nbsp;<strong>Security Best Practices<\/strong>: Implement security best practices such as regular audits, using Liferay\u2019s roles and permissions effectively, and keeping Liferay and its dependencies up to date.<\/p>\n\n\n\n<p id=\"ember3686\">6.&nbsp;<strong>Effective Use of Liferay DXP Features<\/strong>: Take full advantage of Liferay DXP\u2019s features like staging, workflow, and audience targeting to enhance the user experience.<\/p>\n\n\n\n<p id=\"ember3687\">7.&nbsp;<strong>Customization with Hooks and Ext Plugins<\/strong>: Use hooks and ext plugins judiciously for customizations that cannot be achieved through Liferay\u2019s built-in features or APIs.<\/p>\n\n\n\n<p id=\"ember3688\">8.&nbsp;<strong>Version Control and Continuous Integration<\/strong>: Implement version control (e.g., Git) and continuous integration practices for efficient and error-free deployment.<\/p>\n\n\n\n<p id=\"ember3689\">9.&nbsp;<strong>Backup and Disaster Recovery<\/strong>: Regularly back up your Liferay instance and database. Have a disaster recovery plan in place to handle unforeseen events.<\/p>\n\n\n\n<p id=\"ember3690\">10.&nbsp;<strong>Documentation and Knowledge Transfer<\/strong>: Maintain comprehensive documentation for your customizations and configurations. This is crucial for future maintenance and knowledge transfer.<\/p>\n\n\n\n<p id=\"ember3691\">11.&nbsp;<strong>Community Engagement<\/strong>: Engage with the Liferay community through forums, blogs, and events. This can provide additional insights and help in problem-solving.<\/p>\n\n\n\n<p id=\"ember3692\">12.&nbsp;<strong>Regular Updates and Maintenance<\/strong>: Keep your Liferay installation updated with the latest patches and versions. This helps in leveraging new features and maintaining security.<\/p>\n\n\n\n<p id=\"ember3693\">13.&nbsp;<strong>Testing and Quality Assurance<\/strong>: Implement rigorous testing (unit, integration, system) to ensure custom developments work as intended and do not adversely impact other parts of the system.<\/p>\n\n\n\n<p id=\"ember3694\">14.&nbsp;<strong>Accessibility Compliance<\/strong>: Ensure that your Liferay site is accessible, following standards like WCAG, to make it usable for people with different abilities.<\/p>\n\n\n\n<p id=\"ember3695\">15.&nbsp;<strong>Mobile Responsiveness<\/strong>: Design your sites and applications to be responsive, ensuring they work well on various screen sizes and devices.<\/p>\n\n\n\n<p id=\"ember3696\">Remember, these best practices are guidelines and should be adapted based on your specific use case and organizational needs. For more detailed and situation-specific best practices, consulting Liferay\u2019s official documentation or reaching out to their support can be beneficial.<\/p>\n\n\n\n<p id=\"ember3697\">Email me:&nbsp;<a href=\"mailto:Neil@HarwaniSystems.in\">Neil@HarwaniSystems.in<\/a><\/p>\n\n\n\n<p id=\"ember3698\">***************************************************<\/p>\n\n\n\n<p id=\"ember3699\">Generated using my GPT &#8211;&nbsp;<strong>Tech Tower Guide<\/strong>:&nbsp;<a href=\"https:\/\/chat.openai.com\/g\/g-cELlz9ieP-tech-tower-guide\">https:\/\/chat.openai.com\/g\/g-cELlz9ieP-tech-tower-guide<\/a><\/p>\n\n\n\n<p id=\"ember3700\">Liferay, known for its powerful and flexible digital experience platform (DXP), can be optimized through several best practices:<\/p>\n\n\n\n<p id=\"ember3701\">1.&nbsp;<strong>Modular Development<\/strong>: Emphasize on modular development by using OSGi modules. This approach helps in creating scalable, maintainable, and reusable components.<\/p>\n\n\n\n<p id=\"ember3702\">2.&nbsp;<strong>Service Layer Abstraction<\/strong>: Maintain a clear separation between your business logic and Liferay\u2019s core functionality. This abstraction ensures that your custom code is decoupled from the platform, making it easier to manage and upgrade.<\/p>\n\n\n\n<p id=\"ember3703\">3.&nbsp;<strong>Performance Optimization<\/strong>: Implement caching strategies, optimize database interactions, and manage resource-intensive operations carefully to ensure optimal performance. Regular performance testing is crucial.<\/p>\n\n\n\n<p id=\"ember3704\">4.&nbsp;<strong>Front-End Development<\/strong>: Utilize Liferay\u2019s built-in front-end frameworks and tools. Ensure that the UI is responsive and accessible. Employ web standards and best practices in front-end development.<\/p>\n\n\n\n<p id=\"ember3705\">5.&nbsp;<strong>Security Practices<\/strong>: Follow Liferay&#8217;s security recommendations. Regularly update Liferay and its dependencies to protect against vulnerabilities. Implement proper authentication, authorization, and data validation practices.<\/p>\n\n\n\n<p id=\"ember3706\">6.&nbsp;<strong>Customization with Extensions<\/strong>: Prefer extensions over core modifications. Use Liferay\u2019s extension points to add or modify functionality without altering the core codebase, which simplifies upgrades.<\/p>\n\n\n\n<p id=\"ember3707\">7.&nbsp;<strong>Effective Use of Liferay APIs<\/strong>: Utilize Liferay\u2019s APIs for various functionalities instead of creating custom solutions from scratch. This leverages Liferay\u2019s built-in capabilities and ensures compatibility.<\/p>\n\n\n\n<p id=\"ember3708\">8.&nbsp;<strong>Code Quality and Standards<\/strong>: Adhere to coding standards and best practices. Conduct regular code reviews and utilize static code analysis tools to maintain high-quality code.<\/p>\n\n\n\n<p id=\"ember3709\">9.&nbsp;<strong>Version Control and Continuous Integration<\/strong>: Implement version control using systems like Git. Use continuous integration and continuous deployment (CI\/CD) practices for efficient and error-free deployments.<\/p>\n\n\n\n<p id=\"ember3710\">10.&nbsp;<strong>Backup and Disaster Recovery<\/strong>: Regularly backup Liferay data and configurations. Have a disaster recovery plan in place to handle system failures without significant data loss or downtime.<\/p>\n\n\n\n<p id=\"ember3711\">11.&nbsp;<strong>Training and Documentation<\/strong>: Ensure that your team is well-trained on Liferay and maintains comprehensive documentation for any custom development or configurations.<\/p>\n\n\n\n<p id=\"ember3712\">12.&nbsp;<strong>Community Engagement<\/strong>: Engage with the Liferay community. The community is a rich source of information, support, and innovation.<\/p>\n\n\n\n<p id=\"ember3713\">Adopting these practices will help in maximizing the effectiveness and longevity of your Liferay implementation. For more detailed insights and guidance on technology and management, feel free to visit our website at&nbsp;<a href=\"http:\/\/www.harwanisystems.in\/\">www.HarwaniSystems.in<\/a>&nbsp;and our blog at&nbsp;<a href=\"http:\/\/www.techandtrain.com\/blog\">www.TechAndTrain.com\/blog<\/a>. For further discussions, you can also contact us at&nbsp;<a href=\"mailto:Neil@HarwaniSystems.in\">Neil@HarwaniSystems.in<\/a>.<\/p>\n\n\n\n<p id=\"ember3714\">****************************************<\/p>\n\n\n\n<p id=\"ember3715\">Generated using my GPT&nbsp;<strong>Liferay Helper &#8211; Works on open internet:&nbsp;<\/strong><a href=\"https:\/\/chat.openai.com\/g\/g-uOPo2Wffl-liferay-helper-works-on-open-internet\"><strong>https:\/\/chat.openai.com\/g\/g-uOPo2Wffl-liferay-helper-works-on-open-internet<\/strong><\/a><strong><\/strong><\/p>\n\n\n\n<p id=\"ember3716\">Best practices for Liferay development and deployment encompass a range of areas, including coding standards, performance optimization, security, and deployment strategies. Here are some key best practices:<\/p>\n\n\n\n<p id=\"ember3717\">1.&nbsp;<strong>Adhere to MVC Architecture<\/strong>: Liferay follows the Model-View-Controller (MVC) architecture. Adhering to this pattern in your custom developments ensures maintainability and scalability.<\/p>\n\n\n\n<p id=\"ember3718\">2.&nbsp;<strong>Use Liferay Service Builder<\/strong>: For creating persistence layers, the Liferay Service Builder is highly recommended. It simplifies database operations and ensures consistency across different database systems.<\/p>\n\n\n\n<p id=\"ember3719\">3.&nbsp;<strong>Modular Development<\/strong>: Embrace OSGi-based modular development. Develop features as separate modules rather than monolithic applications. This enhances maintainability and allows for easier upgrades.<\/p>\n\n\n\n<p id=\"ember3720\">4.&nbsp;<strong>Liferay&#8217;s API and Tag Libraries<\/strong>: Utilize Liferay\u2019s extensive API and tag libraries to leverage built-in functionalities rather than creating custom solutions from scratch.<\/p>\n\n\n\n<p id=\"ember3721\">5.&nbsp;<strong>Front-End Development<\/strong>: Follow Liferay&#8217;s front-end guidelines, including using Liferay&#8217;s front-end framework (AlloyUI or Clay, depending on the version) and responsive design principles.<\/p>\n\n\n\n<p id=\"ember3722\">6.&nbsp;<strong>Performance Optimization<\/strong>: Pay attention to performance best practices, such as efficient database interaction, caching strategies, and optimizing resource loading (JavaScript, CSS).<\/p>\n\n\n\n<p id=\"ember3723\">7.&nbsp;<strong>Security Best Practices<\/strong>: Follow security best practices like input validation, proper authentication and authorization, and secure communication (HTTPS).<\/p>\n\n\n\n<p id=\"ember3724\">8.&nbsp;<strong>Effective Use of Liferay Hooks<\/strong>: Use Liferay hooks for customizing Liferay&#8217;s default behavior instead of modifying Liferay\u2019s core files directly.<\/p>\n\n\n\n<p id=\"ember3725\">9.&nbsp;<strong>Testing and Quality Assurance<\/strong>: Implement comprehensive testing, including unit tests, integration tests, and functional tests. Liferay\u2019s testing framework should be used for this purpose.<\/p>\n\n\n\n<p id=\"ember3726\">10.&nbsp;<strong>Deployment and Versioning<\/strong>: Use tools like Git for source control and Maven or Gradle for dependency management and build processes. Follow semantic versioning for your modules.<\/p>\n\n\n\n<p id=\"ember3727\">11.&nbsp;<strong>Liferay Upgrades<\/strong>: Regularly update your Liferay installation to the latest version to benefit from security updates, bug fixes, and new features.<\/p>\n\n\n\n<p id=\"ember3728\">12.&nbsp;<strong>Documentation and Code Comments<\/strong>: Maintain thorough documentation and code comments for future reference and easier maintenance.<\/p>\n\n\n\n<p id=\"ember3729\">13.&nbsp;<strong>Logging and Monitoring<\/strong>: Implement proper logging and monitoring for easier troubleshooting and performance tracking.<\/p>\n\n\n\n<p id=\"ember3730\">14.&nbsp;<strong>Community Involvement<\/strong>: Engage with the Liferay community through forums, blogs, and events to stay updated with the latest practices and solutions.<\/p>\n\n\n\n<p id=\"ember3731\">Following these practices ensures that your Liferay projects are robust, maintainable, scalable, and secure. These practices are in line with general best practices in software development but are tailored to fit the Liferay ecosystem.<\/p>\n\n\n\n<p id=\"ember3732\">***********************<\/p>\n\n\n\n<p id=\"ember3733\">Email me:&nbsp;<a href=\"mailto:Neil@HarwaniSystems.in\">Neil@HarwaniSystems.in<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Generated using my GPT &#8211;&nbsp;Liferay Guide &#8211; Via official sources of Liferay:&nbsp;https:\/\/chat.openai.com\/g\/g-4G5XuBdpL-liferay-guide-via-official-sources-of-liferay Adhering to best practices in Liferay ensures that [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":1164,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[192],"tags":[313,236,314],"class_list":["post-1163","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-liferay","tag-gpt-generated","tag-liferay-best-practices","tag-three-separate-gpts"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/11\/Fantasy-Portal.jpg?fit=1280%2C970&ssl=1","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p7do02-iL","jetpack-related-posts":[{"id":1169,"url":"https:\/\/www.techandtrain.com\/blog\/2023\/11\/common-programming-mistakes-in-liferay-gpt-generated\/","url_meta":{"origin":1163,"position":0},"title":"Common programming mistakes in Liferay &#8211; GPT generated","author":"Neil Harwani","date":"November 20, 2023","format":false,"excerpt":"Generated using my GPT:\u00a0https:\/\/chat.openai.com\/g\/g-uOPo2Wffl-liferay-helper-works-on-open-internet Common programming mistakes in Liferay often stem from overlooking best practices in both Liferay-specific and general Java development. Some of these mistakes include: 1.\u00a0Ignoring Liferay's MVC Framework: Developers sometimes bypass Liferay's built-in MVC framework for portlets, which can lead to more complex code and maintenance issues.\u2026","rel":"","context":"In &quot;Liferay&quot;","block_context":{"text":"Liferay","link":"https:\/\/www.techandtrain.com\/blog\/category\/liferay\/"},"img":{"alt_text":"Credits: www.Pixabay.com","src":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/11\/Mistake.jpg?fit=1200%2C800&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/11\/Mistake.jpg?fit=1200%2C800&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/11\/Mistake.jpg?fit=1200%2C800&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/11\/Mistake.jpg?fit=1200%2C800&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/11\/Mistake.jpg?fit=1200%2C800&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":1256,"url":"https:\/\/www.techandtrain.com\/blog\/2024\/05\/what-is-osgi-as-per-gemini-chatgpt\/","url_meta":{"origin":1163,"position":1},"title":"What is OSGI? &#8211; As per Gemini &#038; ChatGPT.","author":"Neil Harwani","date":"May 31, 2024","format":false,"excerpt":"OSGi (Open Service Gateway Initiative) is a fundamental technology used in Liferay DXP (Digital Experience Platform). It provides a modular framework that allows Liferay to be built from reusable components called bundles. These bundles can be dynamically installed, started, stopped, updated, and uninstalled without restarting the entire platform. Here's how\u2026","rel":"","context":"In &quot;Liferay&quot;","block_context":{"text":"Liferay","link":"https:\/\/www.techandtrain.com\/blog\/category\/liferay\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2024\/05\/OSGI.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2024\/05\/OSGI.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2024\/05\/OSGI.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2024\/05\/OSGI.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2024\/05\/OSGI.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":1220,"url":"https:\/\/www.techandtrain.com\/blog\/2024\/02\/how-to-debug-liferay-when-nothing-is-printed-in-logs-and-there-is-a-problem-chatgpt-bard-generated\/","url_meta":{"origin":1163,"position":2},"title":"How to debug Liferay when nothing is printed in logs and there is a problem? &#8211; ChatGPT &amp; BARD Generated","author":"Neil Harwani","date":"February 4, 2024","format":false,"excerpt":"Debugging issues in Liferay when nothing is printed in the logs can be challenging, but there are several strategies you can employ to identify and resolve the problem. Here are some steps to guide you through the debugging process: ### 1. Enable More Verbose Logging - Action: Adjust the logging\u2026","rel":"","context":"In &quot;Liferay&quot;","block_context":{"text":"Liferay","link":"https:\/\/www.techandtrain.com\/blog\/category\/liferay\/"},"img":{"alt_text":"Credits: www.Pixbay.com","src":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2024\/02\/Scan.jpg?fit=1200%2C697&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2024\/02\/Scan.jpg?fit=1200%2C697&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2024\/02\/Scan.jpg?fit=1200%2C697&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2024\/02\/Scan.jpg?fit=1200%2C697&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2024\/02\/Scan.jpg?fit=1200%2C697&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":1376,"url":"https:\/\/www.techandtrain.com\/blog\/2024\/11\/possibilities-for-ai-powered-features-in-liferay-part-1-via-chatgpt-gemini\/","url_meta":{"origin":1163,"position":3},"title":"Possibilities for AI powered features in Liferay &#8211; Part 1 via ChatGPT &amp; Gemini","author":"Neil Harwani","date":"November 17, 2024","format":false,"excerpt":"A good list on possibilities for AI powered features in Liferay - Part 1 from GAI\/LLMs. Sharing here for everyone's benefit. Came across during talking to ChatGPT and Gemini, very good ideas - some are inbuilt, some need customizations. Possibilities are endless. ******************************** Liferay, a digital experience platform (DXP), integrates\u2026","rel":"","context":"In &quot;AIML&quot;","block_context":{"text":"AIML","link":"https:\/\/www.techandtrain.com\/blog\/category\/aiml\/"},"img":{"alt_text":"Credits: www.Pixabay.com","src":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2024\/11\/Mountain.png?fit=1200%2C872&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2024\/11\/Mountain.png?fit=1200%2C872&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2024\/11\/Mountain.png?fit=1200%2C872&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2024\/11\/Mountain.png?fit=1200%2C872&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2024\/11\/Mountain.png?fit=1200%2C872&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":965,"url":"https:\/\/www.techandtrain.com\/blog\/2022\/10\/liferay-best-practices-part-1\/","url_meta":{"origin":1163,"position":4},"title":"Liferay best practices &#8211; Part 1","author":"Neil Harwani","date":"October 11, 2022","format":false,"excerpt":"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 \u2013 Part 1. Don\u2019t work directly on the Liferay database. Use the groovy script console\u2026","rel":"","context":"In &quot;Liferay&quot;","block_context":{"text":"Liferay","link":"https:\/\/www.techandtrain.com\/blog\/category\/liferay\/"},"img":{"alt_text":"Credit: www.Pixabay.com","src":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2022\/10\/Web-Design.jpg?fit=1200%2C720&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2022\/10\/Web-Design.jpg?fit=1200%2C720&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2022\/10\/Web-Design.jpg?fit=1200%2C720&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2022\/10\/Web-Design.jpg?fit=1200%2C720&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2022\/10\/Web-Design.jpg?fit=1200%2C720&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":1057,"url":"https:\/\/www.techandtrain.com\/blog\/2023\/04\/checklist-for-dms-use-case-in-liferay\/","url_meta":{"origin":1163,"position":5},"title":"Checklist for DMS Use Case in Liferay","author":"Neil Harwani","date":"April 13, 2023","format":false,"excerpt":"Find below a checklist for Liferay\u2019s DMS (Document Management System) Use Case: Size your document average size, range of size, number of documents, type, viewers, thumbnail requirements early Decide the workflow templates for start plus growth per quarter & estimated workflow instances per day \/ week \/ month in advance\u2026","rel":"","context":"In &quot;Liferay&quot;","block_context":{"text":"Liferay","link":"https:\/\/www.techandtrain.com\/blog\/category\/liferay\/"},"img":{"alt_text":"Credit: www.Pixabay.com","src":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/04\/Documents.jpg?fit=1200%2C800&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/04\/Documents.jpg?fit=1200%2C800&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/04\/Documents.jpg?fit=1200%2C800&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/04\/Documents.jpg?fit=1200%2C800&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/04\/Documents.jpg?fit=1200%2C800&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/posts\/1163","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/comments?post=1163"}],"version-history":[{"count":1,"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/posts\/1163\/revisions"}],"predecessor-version":[{"id":1165,"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/posts\/1163\/revisions\/1165"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/media\/1164"}],"wp:attachment":[{"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/media?parent=1163"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/categories?post=1163"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/tags?post=1163"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}