<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <title>Liferay</title>
  <link rel="self" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856" />
  <subtitle>Liferay</subtitle>
  <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856</id>
  <updated>2026-08-11T05:00:28Z</updated>
  <dc:date>2026-08-11T05:00:28Z</dc:date>
  <entry>
    <title>OIDC SLO in Liferay DXP</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126438487" />
    <author>
      <name>David H Nebinger</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126438487</id>
    <updated>2026-08-05T17:04:04Z</updated>
    <published>2026-08-05T16:26:00Z</published>
    <summary type="html">OpenID Connect Single Logout is often misunderstood in the context of Liferay DXP, with many assuming it isn't supported. Beginning with Liferay DXP 2026.Q1, that's no longer the case. This article</summary>
    <dc:creator>David H Nebinger</dc:creator>
    <dc:date>2026-08-05T16:26:00Z</dc:date>
  </entry>
  <entry>
    <title>Bringing Liferay to Cross-platform Development</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126437387" />
    <author>
      <name>Nestor Ledon</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126437387</id>
    <updated>2026-08-05T14:11:00Z</updated>
    <published>2026-08-05T13:37:00Z</published>
    <summary type="html">Liferay already provides a mature platform for content, permissions, users, sites, workflows, and headless APIs. What has been missing is a practical way to use that platform as the backend for a</summary>
    <dc:creator>Nestor Ledon</dc:creator>
    <dc:date>2026-08-05T13:37:00Z</dc:date>
  </entry>
  <entry>
    <title>No More Rebuild-and-Redeploy: Instant Hot Reload for Liferay React Client Extensions</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126396924" />
    <author>
      <name>Ankit Hadiyal</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126396924</id>
    <updated>2026-08-02T23:42:05Z</updated>
    <published>2026-08-01T10:10:00Z</published>
    <summary type="html">The Rebuild-and-Redeploy Loop Every Client Extension Developer Knows If you've built a React-based client extension (CX) for Liferay DXP, you know this rhythm well. You tweak a component - adjust some</summary>
    <dc:creator>Ankit Hadiyal</dc:creator>
    <dc:date>2026-08-01T10:10:00Z</dc:date>
  </entry>
  <entry>
    <title>Service Builder Compatibility Matrix</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126389560" />
    <author>
      <name>David H Nebinger</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126389560</id>
    <updated>2026-07-31T18:51:50Z</updated>
    <published>2026-07-30T17:54:00Z</published>
    <summary type="html">Service Builder generates code based on the Liferay APIs it expects to target, so the newest Service Builder plugin is not always the right fit for every Liferay DXP version. This article explains how</summary>
    <dc:creator>David H Nebinger</dc:creator>
    <dc:date>2026-07-30T17:54:00Z</dc:date>
  </entry>
  <entry>
    <title>Batch Imports Audit</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126385336" />
    <author>
      <name>Vitalii Koshelenko</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126385336</id>
    <updated>2026-07-29T12:05:29Z</updated>
    <published>2026-07-29T09:07:00Z</published>
    <summary type="html">Introduction Liferay's Batch Engine is the workhorse behind bulk data movement into Liferay. Instead of creating records one REST call at a time, you POST (or PUT, or DELETE) an array of items to a</summary>
    <dc:creator>Vitalii Koshelenko</dc:creator>
    <dc:date>2026-07-29T09:07:00Z</dc:date>
  </entry>
  <entry>
    <title>Installing Liferay DXP 2026.Q1 on Red Hat JBoss Web Server 6.2.3</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126381472" />
    <author>
      <name>David H Nebinger</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126381472</id>
    <updated>2026-07-30T16:59:19Z</updated>
    <published>2026-07-28T19:28:00Z</published>
    <summary type="html">This post walks through installing Liferay DXP 2026.Q1 on Red Hat JBoss Web Server 6.2.3, using RHEL 10 as the reference environment. It focuses on the details that are easy to miss when adapting</summary>
    <dc:creator>David H Nebinger</dc:creator>
    <dc:date>2026-07-28T19:28:00Z</dc:date>
  </entry>
  <entry>
    <title>Beyond the Prototype: What’s New in the Liferay Fragments Repository</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126355026" />
    <author>
      <name>Peter Richards</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126355026</id>
    <updated>2026-07-23T13:49:00Z</updated>
    <published>2026-07-23T07:12:00Z</published>
    <summary type="html">The Evolution of the Library When I wrote about scaling Liferay fragments with AI and automation earlier this year, the repository was already transitioning from a experimental lab into a structured</summary>
    <dc:creator>Peter Richards</dc:creator>
    <dc:date>2026-07-23T07:12:00Z</dc:date>
  </entry>
  <entry>
    <title>Liferay AI Hub Practical Recommendations: Agents, Instructions, Prompts &amp; Guardrails</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126354004" />
    <author>
      <name>David H Nebinger</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126354004</id>
    <updated>2026-07-22T16:23:41Z</updated>
    <published>2026-07-22T15:14:00Z</published>
    <summary type="html">Building a useful chatbot with Liferay AI Hub involves more than wiring a model into a page. This post walks through the practical design decisions that matter when working with AI Hub agents,</summary>
    <dc:creator>David H Nebinger</dc:creator>
    <dc:date>2026-07-22T15:14:00Z</dc:date>
  </entry>
  <entry>
    <title>KDXP: One Kotlin Codebase for Liferay Apps Everywhere</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126323612" />
    <author>
      <name>Nestor Ledon</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126323612</id>
    <updated>2026-07-16T01:28:45Z</updated>
    <published>2026-07-15T16:58:00Z</published>
    <summary type="html">Liferay already provides an impressive enterprise backend: authentication, users, roles, sites, documents, content, custom Objects, permissions, workflows, and headless APIs. What it has lacked is a</summary>
    <dc:creator>Nestor Ledon</dc:creator>
    <dc:date>2026-07-15T16:58:00Z</dc:date>
  </entry>
  <entry>
    <title>No More Guesswork: Deploy Your Liferay OSGi Modules in the Right Order, Automatically</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126295475" />
    <author>
      <name>Ankit Hadiyal</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126295475</id>
    <updated>2026-07-06T22:06:22Z</updated>
    <published>2026-07-06T17:40:00Z</published>
    <summary type="html">A Problem Every Liferay Developer Has Faced If you have worked on a Liferay DXP project with more than a few custom modules, this scene will feel familiar. You deploy all your modules together. Most</summary>
    <dc:creator>Ankit Hadiyal</dc:creator>
    <dc:date>2026-07-06T17:40:00Z</dc:date>
  </entry>
  <entry>
    <title>Beyond GET: Could HTTP QUERY (RFC 10008) Improve Liferay Headless APIs?</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126213193" />
    <author>
      <name>Laxit Khanpara</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126213193</id>
    <updated>2026-07-06T22:16:39Z</updated>
    <published>2026-07-03T09:27:00Z</published>
    <summary type="html">Introduction One of the biggest strengths of Liferay DXP is its Headless API ecosystem. Whether we're working with Custom Objects, Web Content, Documents, Commerce, or custom REST Builder APIs,</summary>
    <dc:creator>Laxit Khanpara</dc:creator>
    <dc:date>2026-07-03T09:27:00Z</dc:date>
  </entry>
  <entry>
    <title>Smooth Sailing: Migrating Liferay DXP from 7.2 to 7.4 (2026 Q1)</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126136896" />
    <author>
      <name>Madhukar Kumar</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126136896</id>
    <updated>2026-06-20T22:26:10Z</updated>
    <published>2026-06-20T12:47:00Z</published>
    <summary type="html">If you are planning this upgrade, here is your definitive, step-by-step technical playbook to take your local environment, database, and codebase from 7.2 to 7.4. Phase 1: Environment &amp; Local 7.2</summary>
    <dc:creator>Madhukar Kumar</dc:creator>
    <dc:date>2026-06-20T12:47:00Z</dc:date>
  </entry>
  <entry>
    <title>CE is sunsetted. What's your next move?</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126120230" />
    <author>
      <name>Ben Turner</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126120230</id>
    <updated>2026-06-19T06:12:02Z</updated>
    <published>2026-06-19T05:36:00Z</published>
    <summary type="html">If you're using Liferay Community Edition (CE), or are an SI that has customers who do, you probably know (well, if you've been anywhere near this site this year you definitely know!) that the final</summary>
    <dc:creator>Ben Turner</dc:creator>
    <dc:date>2026-06-19T05:36:00Z</dc:date>
  </entry>
  <entry>
    <title>Mission-Critical Email Delivery in Liferay</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126045225" />
    <author>
      <name>David H Nebinger</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126045225</id>
    <updated>2026-06-20T22:25:47Z</updated>
    <published>2026-06-17T17:51:00Z</published>
    <summary type="html">A customer asked a simple question after a six-hour mail server outage: how can email delivery from Liferay be guaranteed? The answer led to an interesting architectural exploration involving JMS,</summary>
    <dc:creator>David H Nebinger</dc:creator>
    <dc:date>2026-06-17T17:51:00Z</dc:date>
  </entry>
  <entry>
    <title>Call for Papers for DevCon - two weeks to go!</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126022454" />
    <author>
      <name>Ben Turner</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126022454</id>
    <updated>2026-06-15T05:27:38Z</updated>
    <published>2026-06-15T05:10:00Z</published>
    <summary type="html">If you've been paying attention recently on liferay.dev you have probably noticed the new banner promoting DevCon. It may still be a few months until our biggest event of the year takes place in</summary>
    <dc:creator>Ben Turner</dc:creator>
    <dc:date>2026-06-15T05:10:00Z</dc:date>
  </entry>
  <entry>
    <title>Alternative tool for migrating Liferay to PostgreSQL</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126015368" />
    <author>
      <name>Carlos Durán</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=126015368</id>
    <updated>2026-06-14T23:51:27Z</updated>
    <published>2026-06-13T22:37:00Z</published>
    <summary type="html">For some time now, PostgreSQL has been gaining so much ground that even Liferay itself has made the decision to replace MySQL with PostgreSQL. At this point, many of us are faced with the non-trivial</summary>
    <dc:creator>Carlos Durán</dc:creator>
    <dc:date>2026-06-13T22:37:00Z</dc:date>
  </entry>
  <entry>
    <title>How to Set Up Centralized Splunk Logging for Liferay DXP</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=125991919" />
    <author>
      <name>David H Nebinger</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=125991919</id>
    <updated>2026-06-11T19:48:54Z</updated>
    <published>2026-06-11T19:03:00Z</published>
    <summary type="html">Centralized logging is a common requirement for organizations running Liferay DXP, but configuring Splunk integration is not always straightforward. In this post, I’ll walk through a complete working</summary>
    <dc:creator>David H Nebinger</dc:creator>
    <dc:date>2026-06-11T19:03:00Z</dc:date>
  </entry>
  <entry>
    <title>The Database Upgrade Tool Just Got Easier</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=125931448" />
    <author>
      <name>István Dézsi</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=125931448</id>
    <updated>2026-06-14T23:48:48Z</updated>
    <published>2026-06-09T09:40:00Z</published>
    <summary type="html">If you have ever run a Liferay database upgrade, you know how unforgiving the setup used to be. One wrong path in a properties file, or a database your edition doesn't even support, and you could be</summary>
    <dc:creator>István Dézsi</dc:creator>
    <dc:date>2026-06-09T09:40:00Z</dc:date>
  </entry>
  <entry>
    <title>Liferay DXP 2026.Q2 - Release Webinar - Replay</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=125848705" />
    <author>
      <name>Ben Turner</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=125848705</id>
    <updated>2026-05-27T03:06:19Z</updated>
    <published>2026-05-27T02:55:00Z</published>
    <summary type="html">Hi everyone, I'm pleased to let you all know that the recording of the 2026.Q2 Release Webinar is now available for you to replay at you leisure! You can find the recording on Learn here, and there</summary>
    <dc:creator>Ben Turner</dc:creator>
    <dc:date>2026-05-27T02:55:00Z</dc:date>
  </entry>
  <entry>
    <title>Liferay DXP 2026.Q2 is now available!</title>
    <link rel="alternate" href="https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=125806570" />
    <author>
      <name>Ben Turner</name>
    </author>
    <id>https://liferay.dev/c/blogs/find_entry?p_l_id=119785856&amp;entryId=125806570</id>
    <updated>2026-05-15T05:07:41Z</updated>
    <published>2026-05-15T04:40:00Z</published>
    <summary type="html">As you all know by now, each quarter we release a full new release of Liferay DXP. Although it may only seem like a few weeks back when we released our 2026.Q1 version, it's already time for Q2. As of</summary>
    <dc:creator>Ben Turner</dc:creator>
    <dc:date>2026-05-15T04:40:00Z</dc:date>
  </entry>
</feed>
