Last Updated: Jun 17, 2024
documentation for the dotCMS Content Management System

LTS dotCMS releases

dotCMS will periodically specify specific product releases as Long-Term Supported (LTS) releases, which will be maintained for a longer period than other dotCMS releases, and which will provide a number of advantages for customers that choose to install them.

dotCMS is committed to the security and stability of our latest LTS versions. In our ongoing efforts to protect users, we have established specific timelines for resolving detected vulnerabilities. Note that the responsibility outlined here concerns vulnerabilities that are relevant to live, supported versions. Users on current LTS versions will benefit from security updates in accordance with our established schedules.

Please see the Long Term Supported Releases page for more information and Current Releases for downloads.

Major Version Current Patch Last Updated End of Life Date
24.04.24 LTS 24.04.24v4 Jul 9, 2024 Nov 6, 2025
23.10.24 LTS 23.10.24v12 Jul 9, 2024 May 19, 2025
23.01 LTS 23.01.19 Jul 9, 2024 Sep 22, 2024
22.03 LTS 22.03.15 Apr 15, 2024 ⚠️ Feb 11, 2024
21.06 LTS 21.06.14 Feb 23, 2023 Apr 30, 2023
5.3.8 LTS Sep 30, 2022 Sep 30, 2022
5.2.8 LTS Feb 16, 2021 Jun 2, 2022
⌛ Notice: This major version is past its End of Life date and no longer receives updates.

dotCMS 22.03.15 LTS

Available: Apr 15, 2024 Demo starter image: 20220209


  • Scaled back some excessively verbose log entries. [#27910]
  • Corrected role checks when requiring multiple roles to access a resource. [#27909]

Dependencies, Components, Etc.

  • Updated Postgres JDBC driver. The vulnerability this update resolves did not affect dotCMS, as we do not use the setting in question. Still, automated scans that don't know any better were very noisy about this. So… we may as well. [#27894]


  • Patched two medium security issues.

dotCMS 22.03.14 LTS

Available: Jan 22, 2024 Demo starter image: 20220209

Enhancements & Adjustments

  • Reserved names are now evaluated in case-insensitive fashion, for improved consistency. [#26796]


  • Publish Date parameter no longer prevents the scheduled content from being exported. [#27007]
    • Also fixes a related issue that prevents export while filtering by a large number of categories.
  • Removed the 255-character limit on the validation of text fields; this was likely to affect, for instance, Vanity URLs with very long addresses. [#26774]
  • The presence of a non-required Site/Folder field in a Content Type no longer causes duplication of contentlets of that type to fail. [#26459]
  • Relationship fields now respect and reflect the order in which related contentlets are received via Workflow Action. [#26439]
  • The sysPublishDate field has been restored to the ElasticSearch object; it now indexes and queries properly. [#25233]
  • Languages API no longer throws 400 errors when duplicates of non-unique keys exist. [#24082]
  • Users with limited permissions can edit Pages and content within their purview, even if they do not have access to the Content Search tool. [#22698]
  • Changed default Pub/Sub provider value in line with recently built Pub/Sub architecture. [#26706]
  • Fixed reserved-name protection for identifier and inode. [#22372]

dotCMS 22.03.13 LTS

Available: Jan 4, 2024 Demo starter image: 20220209

Enhancements & Adjustments

  • Added indexes to the databases responsible for inode and identifier lookups, improving lookup performance by a factor of as much as 4600x on large sites. [#26926]


  • Fixed GraphQL caching, which now behaves in the expected manner. [#26970]
  • Restored the catalina.out Velocity log, once again visible in the Log Viewer. [#26934]

dotCMS 22.03.12 LTS

Available: Dec 8, 2023 Demo starter image: 20220209

Enhancements & Adjustments

  • The JSON viewtool now supports all JSON data types, rather than just strings. [#21529]
  • A set of probes — for startup, readiness, and liveness — has been defined for dotCMS instances running on Kubernetes. [#24885]


  • Fixed issue that could newly created content to disappear from a Page not using the default language due to the new content's failure to inherit the correct language value. [#18575]
  • Corrected 404 redirect routine. [#22559]
  • Fixed bug preventing content from exporting when all languages are selected. [#19734]
  • Relationship fields now properly update via Workflow API calls. [#24167]
  • Beefed up URL-Mapped content resiliency; now, if a detail page is deleted or otherwise broken, and/or a URL map pattern is absent for a given Content Type, you'll still be able to view those pages. Of course, you'll want to fix that situation, but at least you're not throwing 404s in the meantime. [#24490]
  • MonitorResource no longer throws exceptions if DOT_SYSTEM_STATUS_API_IP_ACL is not set. [#25613]
  • Pub/Sub architecture now defaults to SSL connections, preventing failures when interfacing with PostgreSQL instances that only accept SSL. [#26481]
  • Changes to folder values — such as title and sort order — update correctly on the receiver server when push publishing. [#26486]

dotCMS 22.03.11 LTS

Available: Nov 16, 2023 Demo starter image: 20220209

Enhancements & Adjustments

  • Added two-second delay on invalid login — i.e., a nonexistent user — similar to the behavior on receiving an incorrect password. [#23903]


  • Modifying a template no longer removes content from page columns, unless the column or container was expressly removed. [#23181]
  • Fetching language keys for an unsupported language now falls back to default administrative language configured from the System → Configuration tool, rather than the default content language configured through the Types & Tags → Languages tool. [#23777]
  • Large numbers of Site Search indexes no longer cause errors when loading the index list. [#24816]
  • WYSIWYG fields are now once again able to reference images via their virtual path. [#24894]
  • CMS Admin role can view all bundles, regardless of who created them. [#25127]
  • The image processor now retains and respects a certain user-specified resampling parameter (resize_ro) through the entire method call, rather than reverting to a default due to a missing link in the chain. [#25193]
  • On a Relationship field with the showFields field variable set, Binary and Image fields now properly display thumbnails instead of paths. [#25411]
    • Likewise, if one included field is the title field, the correct value for each title will be displayed, instead of displaying the value of the first in the list across each. [#25870]
  • Creating a new field with the same name, but different type, than a previously deleted field now correctly generates a new identifier for the field instead of incorrectly reusing the previous one. [#25827]
  • PNG filter no longer returns a 404 when acceessing an image. [#26374]
  • Global CORS header now respect configuration changes made through environment variables. [#26391]

dotCMS 22.03.10 LTS

Available: Oct 3, 2023 Demo starter image: 20220209

Enhancements & Adjustments

  • Built new PostgreSQL Pub/Sub listener to replace the impossibl Postgres driver with a vanilla one. This gives us a better diagnostic view of the process, and helps rule out some factors in rare but difficult-to-diagnose cases where the driver fails to connect. [#26019]
  • Added to the Maintenance pane the ability to restart not only a dotCMS instance, but an entire cluster. [#22507]
  • The Multipart Web Interceptor plugin, which scans multipart or form requests that use PUT or POST to upload files, has been fully integrated into the core product. [#21854]

Visual Fixes

  • Personas no longer appear in Tag lists with a separate and distinct icon than other tags; a tag is a tag is a tag. [#26159]


  • Elasticsearch queries no longer add :persona to a Tag field that also happens to be a Persona. Whereas the :persona appendage had been stripped of its meaning and function earlier this year, in release 22.03, this is mostly a bit of tidying up. [#26158]
  • Suggestion lists for Tag fields now properly collate tags from content deeper in the folder structure, rather than just the site root. [#26131]
  • Radio-button fields with the Data Type set to True/False now correctly evaluate values of 0 or 1 as valid boolean values in Elasticsearch queries. [#26046]
  • Unnecessary XML encoding has been removed from environmental variables that originate from the Tomcat access log file. [#23669]
  • Updated internal IP blacklists to include AWS metadata services. [#23481]
  • Stabilized internal Tomcat path to prevent breaking changes on minor-version updates. [#23407]
  • Restored PDF and video previews in back-end content editor. [#23359]
  • Additional error handling procedures added to the Scripting API ensure that file handles close properly. [#23082]
  • Widgets with WYSIWYG fields set to Code view no longer encounter value length errors when saving. [#21855]
  • The data-identifier attribute will no cause an error with the contentlet editor if not spaced from the end of a tag. [#22157]

dotCMS 22.03.9 LTS

Available: Sep 7, 2023 Demo starter image: 20220209

Enhancements & Adjustments

  • Implemented lazy loading for workflow histories to improve load times for history-rich content. #22068


  • Using Select All on categories before deleting no longer deletes even deselected items. #20400
  • Tags considered to be stored under specific sites rather than All Sites no longer fail to display. #21904
  • PageCache now only caches with response codes of 200. #22014
  • In the Site Browser, the “View Statistics” data now displays correctly; the button is removed from the menu entirely when the ENABLE_CLICKSTREAM_TRACKING property is set to false. [#22131]
  • In the Job Scheduler, the default Site Search index is specified with (Default) appended to its alias. This caused the Job Scheduler to throw an error when adding a new reindex to the schedule, until that additional text was manually cleared. Well, that snag has been fixed. [#24176]
  • The Copy URL button at the top of the page viewing mode interfaces now copies the whole URL, and not just the path. [#24683]
  • NavTool's getNav method now returns only published links. [#24829]
  • OPTIONS requests to REST APIs no longer generate a 500 error status, and now return proper CORS headers. [#25775]
  • Pagination has been restored to Content API calls with the /related path parameter. [#25666]
  • Edit and Preview modes now properly reflect changes to saved draft in all cases. [#25785]
  • Uploading multiple files will now respect the language filter when assigning the files a system language, instead of defaulting to English. [#25797]
  • Creating a version of content in a second language no longer removes all related content from all language versions of that contentlet. [#25896]
  • Pushing a newly created folder as a limited user with appropriate permissions no longer fails. [#25371]
  • Mending conflicts with the Integrity Checker will no longer result in null values on contentlet_as_json database fields. [#25229]

Breaking Changes

  • Removed unnecessary Spring jars for better parsimony and tidiness. #21944

dotCMS 22.03.8 LTS

Available: Aug 7, 2023 Demo starter image: 20220209

Enhancements & Adjustments

  • Added new Show Preview button to the page viewing mode screens; you can now view a fully rendered preview of your changes in a new tab, outside of the context of the dotCMS back end. [#23948]

Visual Improvements

  • Toggling the Code view in a WYSIWYG field on Content Type that requires scrolling no longer causes the scroll position to jump. #21492


  • WYSIWYG fields now accept images regardless of whether the content is in the default language; after all, even with language barriers, it's not hard to convey that you want to have your picture taken. [#25258]
  • Mending conflicts with the Integrity Checker will no longer result in null values on certain database fields. [#25224]
  • The presence or absence of a trailing slash in URLs no longer yields a different result, such as a 404 response code. [#23276]
  • Fixed Site Browser sorting; the default pattern is to show folders first, alphabetically, and then all other items in the current folder by descending modified date. [#25136]
  • When changing the language of a piece of content, it will likewise alter its relationships to point to versions of subordinate contentlets in the same language, where available. [#24415]

Dependencies, Components, Etc.

  • Removing old jaxws libraries no longer in use. [#24843]

dotCMS 22.03.7 LTS

Available: Jun 27, 2023 Demo starter image: 20220209

Enhancements & Adjustments


  • Fixed the retrieval of Personas via Lucene query; persona tags neither require, nor yield different results with, :persona appended to the tag name. [#22872]
  • The image editor's Download button is now once more hunky-dory. [#23924]
  • Widgets now correctly display in non-default languages on working (i.e., draft) versions of Pages. [#24059]
  • Fixed bug preventing a user with an ID length of more than 36 characters from locking content. [#24133]
  • Removed a wide assortment of unnecessary cache invalidations when saving and/or updating content. This also counts as a performance optimization, though we shall list it as a fix for reasons of honor. [#24781]
  • Creating content in more than two successive languages without leaving the content editor no longer throws an error. [#24286]
  • Restored behavior whereby the file browser dialog shows files in the default language as a fallback if they do not exist in the requested language. [#24444]
  • Push publishing will now properly respect timezone selections made from the dialog in the Publishing Queue's Bundles tab. [#25037]
  • HostAPI findAllFromDB method now properly references variable name column. [#21782]
  • When using the tasks page's “hamburger” button (⋮) menu, the Publish action now fires directly — i.e., the expected behavior — instead of opening the Push Publish dialog. [#23395]
  • Folders no longer fail to push publish if they contain archived content. [#24705]
  • For those who prefer Podman over Docker: File assets now upload properly to dotCMS containers managed via Podman. [#24937]
  • Resolved an issue that caused content to push publish to a working (draft) state instead of a live state in the specific case where an alternate-language version of that same content exists in an archived state. (That sentence went through like eight drafts; you need to take a deep breath before summarizing a bug this particular.) [#25044]
  • getResizeUri method now returns valid URLS for a resized binary image — no more double-slash shenanigans. [#25203]

Breaking Changes

  • Fixed a permission error that prevented a user with a custom role with appropriate permissions from using Workflow API operations. While this will not change observed behaviors, permissions-based fixes are generally classed as breaking changes due to how they may affect the hypothetical user working around them. [#23199]

dotCMS 22.03.6 LTS

Available: May 12, 2023 Demo starter image: 20220209

Enhancements & Adjustments

  • Image permits, which control the number of threads dotCMS's image editor can occupy at once, have been made more permissive through better use of caching. They are now less likely to cap out on routine operations, without compromising their intended purpose of easing system resource burdens. [#23807]
  • Increased number of password hash iterations from 20,000 to 600,000, in line with current OWASP recommendations for a SHA256 algorithm. [#23915]
  • Significantly shortened startup time by optimizing vanity URL loading procedures. [#23982]
  • Changed the way JSON Web Tokens are handled, removing an issuer check and replacing it with additional reliance on jwt_secret.dat. This makes possible the use of the same JWT tokens across multiple environments. [#24395]


  • Fixed issue preventing content with double quotes in its title from displaying properly in a Relationship fields. [#23396]
  • Bad requests, such as malformed URIs, no longer result in Tomcat errors in advance of reaching custom dotCMS error pages. [#21742]
  • Bundled content not assigned to a workflow will no longer fail to push publish. #22087
  • Resolved errors resulting from blanking an existing date field or checking “Never” on an expiration date field. [#22667] [#22350]
  • Performing a health check via /api/v1/system-status now cleans up after itself, removing all created folders. [#23267]
  • Image fields now filter properly according to user input. [#23449]
  • Permissions tabs — appearing in folder properties, contentlets, templates, etc. — no longer fail to load. [#23889]
  • Improved publishing procedures for environments with many locales and relationships, preventing slowdowns. This sounds like it should be under Enhancements, but those slowdowns could get pretty significant. So, here we are. [#24245]
  • Leaving the “publishing” Date/time field blank on content preset for scheduled publishing, no longer causes that content to re-publish if unpublished. We determined this behavior was simply too silly. [#24344]
  • Relationship fields now correctly respect changes to their “required” status; formerly, the checkbox would display according to your changed selection, but the content would not follow suit functionally. [#22532]
  • Updated the /webp/ image filter to accommodate recent versions of Safari capable of rendering WebP files; now WebP is served to sufficiently new versions of Safari, and JPEG to older ones. [#21652]

dotCMS 22.03.5 LTS

Available: Mar 29, 2023 Demo starter image: 20220209

Enhancements & Adjustments

  • Added a method to assign categories to content via Velocity, usable in a Workflow via Velocity script actionlet. [#23009]

Visual Fixes

  • Content Types with two Relationship fields of the same type no longer display list of crossed-out unavailable languages. #21735
  • Fixed cases of back-end menu tools' text not displaying while collapsed. [#23341]
  • File Browser now properly displays multilingual content, not limited by the configured user-interface language. [#24358]
  • Fixed File Browser display behavior; now displays Page and file assets in expected fasion. [#24272]


  • Fixed issue preventing saving content in a secondary language while a working/draft version exists in the default language. [#23280]
  • Categories are no longer removed from content mass-imported via CSV file. [#23440]
  • Saving a contentlet before its related content loads will no longer result in a clearing of the Relationships field. [#22323]
  • Resolved issue preventing latest upgrade for MSSQL database users. [#23761]
  • Fixed error that caused content to disappear from a page after altering its template or layout. #22140
  • Pulling related content with no sorting parameter set now returns related content in the order it was added. #21929)
  • Push Removal of a Static Pushed page no longer removes any other files required for that page to render. #21832
  • Corrected an issue that prevented relating content in a Relationship field with Many-to-One cardinality. [#22840]
  • Corrected the exclusion of two asset directories from back-end exports; both are now present and accounted for. [#23810]
  • Resource consumption has been restricted on PDF thumbnail generation, decreasing system footprint and preventing out-of-memory exceptions. [#23384]
  • Added DOT_IMAGE_GENERATION_SIMULTANEOUS_REQUESTS environment variable to limit the maximum number of threads image processing can consume. [#23384]
  • Fixed the removal of categories through API calls, which no longer throws an error. [#22756]
  • Additional error handling has been added to the PublisherJobQueue to improve logging and resilience. Nigh unkillable, this beast swims in magma, breathes jet exhaust, and revels in the elders' oft-whispered warning: Hunt not the PublisherJobQueue. [#22850]
  • Image selector displays correct totals and respects language selection. [#22729]
  • Resolved errors resulting from blanking an existing date field or checking “Never” on an expiration date field. [#22667] [#22350]
  • Navigation no longer shows duplicate results — both requested and default languages — when requesting multilingual content in the non-default language. [#23890]
  • Fixed issue preventing categories from being added properly to bundles. [#23078]
  • Adding a user to a bundle no longer causes errors. [#22508]
  • Language parameters update correctly when redirecting via Rule. [#24158]
  • Copying a folder that contains Pages with both live and draft versions will no longer result in an error; duplicate your folders fearlessly. [#24441]
  • Fixed an update task that absolutizes container paths: It erroneously added the site to the same path multiple times in certain situations. Well, not anymore. [#24436]

Dependencies, Components, Etc.

  • PDFBox library updated to 2.0.27. [#23384]

dotCMS 22.03.4 LTS

Available: Jan 4, 2023 Demo starter image: 20220209


  • Fixed bug that inverted the display of parent and child in many-to-one Relationship fields. [#22549]
  • Fixed a case where specific conditions could cause drafted content to fail to Push Publish. [#21966]
  • dotCMS now scans zip files to ensure integrity, preventing errors resulting from working with an invalid archive. [#23401]
  • Remote-URL access tools like $json or $import now run in a thread pool to avoid blocking, backups and crashes in the event of high traffic to a non-responsive external API. [#22522]
  • Fixed issue where certain access-limited users could not switch between multiple sites on the back end. This was due to a permission correspondence between the necessary endpoint and the Sites tool, which may not be visible to the limited user. [#23474]
  • Large bulk updates via import are now faster, via adjustments to relationship-field validation operations. Timeout troubles, begone! [#23015]
  • Resolved erroneous difference between the Key/Value field's import and export formatting. [#22582]

Breaking Changes

  • By default, dotCMS no longer follows redirects when accessing remote URLs programmatically. This change is configurable, and can be reversed by setting the REMOTE_CALL_ALLOW_REDIRECTS property to true. [#22512]

dotCMS 22.03.3 LTS

Available: Nov 14, 2022 Demo starter image: 20220209


  • SAML redirects now forward properly after authentication. [#22156]
  • Added a way to avoid cases where hashed IDs are referenced against non-hashed data in the creation of SAML users: Created hash.userid property (boolean) to SAML configuration to control whether the UserID is hashed or not. [#22692]
  • Bulk adjustment of large quantities of permissions can no longer deadlock the database. [#19358]
  • Updating a Binary field via REST API no longer removes the value from other Binary fields in the same contentlet. [#21482]
  • Fixed WebP filter: no longer adds white background in Safari, and default quality no longer ruins perfectly good images. [#21694] [#21652]
  • Fixed issue with database export streams that caused connection closure before file generation in instances behind a load balancer. [#22116]
  • Users with Back-End User and Front-End User roles who sign into the front end are no longer delivered to the back-end Edit Mode version of the page after manual URL entry. [#22124]
  • When upgrading from version 5.1.6 (or older), database migration tasks now run smoothly, without errors due to differences in DB column counts. [#22349]
  • Restored missing locales for Velocity localization operations. [#22603]
  • Fixed a MSSQL DB error on upgrade. [#22605]
  • Time zone data updates properly on upgrade to 22.03 or later. [#22771]
  • Workflow changes save properly for all users, including new users or users with special characters in their name. [#22696]
  • Fixed issue causing some navigation items to fail to display after upgrade to 22.03 or later. [#22809]
  • Fixed the Show Archive checkbox in the Templates section. [#21885]
  • Revamped push-publishing of users: It is now possible to push an individual user instead of all users, and interface labeling is clearer throughout. [#22149]
  • NavTool's getNav() method no longer returns unpublished pages; published pages only! [#22425]
  • Copy Site copies all content; previously, the process encountered a silent cap at 10,000 items due to limits on indexes and Elasticsearch queries. [#22520]
  • Copying a folder containing a page no longer copies the content displayed in that page's containers. [#22763]

Visual Fixes

  • When changing a password, verbose error message now displays when new password does not meet security requirements. [#22204]
  • Content Palette displays larger numbers of Content Types more reliably. [#22338]
  • The “What's Changed?” checkbox in Edit Mode now displays as checked when enabled, and correctly switches between states. [#22673]
  • Pagination now displays properly when querying related content by REST API. [#22236]
  • Displayed date updates correctly on menu after changing time zone. [#23128]
  • Push publishing queue displays all bundles, even when one or more fail to publish. [#23062]

Enhancements and Adjustments

  • Switched to using Tomcat's RemoteIpValve for DNS resolution. [#19569]
  • Removed performance drag from supporting on-the-fly configuration changes via file watchers and other blocking patterns, which are unsuited to a containerized paradigm. [#21619]
  • Reinstated Publishing options in Template editor. [#21612]
  • Various improvements have been implemented in upgrade routines. [#22916]
  • Submit button disabled immediately after Form submission to prevent duplicate submissions. [#22951]
  • Implemented storage of content info as JSON for MSSQL databases — as previously implemented for PostgreSQL. [#21219]
  • Removed various system fields — tags, categories, relationships, constants, host, and folder — from the immutable JSON object storage in the database. Folder and host are passed in during the construction of a contentlet; the rest are loaded lazily. [#21858]
  • Related content spanning multiple locales has been made more performant, shortening load times. [#22910]
  • Queued jobs have received additional failsafes against long waits for dependencies. [#23041]
  • Improved ContentMap category lookups to be quicker and less expensive. [#22864]

Dependencies & Components

  • Minor version update to Java on Docker image. [#22852]
  • Updated Tomcat to subsequent minor version. [#21849]

dotCMS 22.03.2 LTS

Available: Aug 2, 2022 Demo starter image: 20220209


  • It is now possible to retrieve parent content through a child contentlet's Relationship Field by using Lucene queries.
  • Date and time fields have been modified in MSSQL databases to include time zone data.


  • An error that could cause OSGi import procedures to fail has been corrected.
  • No HTML field-validation regular expression no longer invalidates an entry if it detects a period.
  • Pages with the show_on_menu option enabled no longer create exceptions in procedures that reorder navigation elements.
  • Corrected issue that prevented limited users with sitewide viewing permissions from viewing content not explicitly permitted for their role.
  • Static Push Publishing no longer fails when pushing certain Base Content Types when a default language other than English is set.
  • Resolved an error that could cause OSGi import procedures to fail when a version range is specified.
  • dotParse now properly respects all parameters of the config property.
  • Date and time data are now updated before timezone is factored in, to prevent date and time errors during upgrades.
  • Bad results on ShortyIdentifier database calls are no longer cached. This prevents a condition in which a database error could result in persistent 404 status for “shorty” IDs until their region is flushed.
  • Updated SSL configuration to resolve an inactive port in the Docker image.

Visual Fixes

  • Corrected a display issue where relationship fields, on editing, sometimes appeared to change the type selection, such that a many-to-many relationship would display as a one-to-many relationship.
  • Improved logo displays on back-end menus.


  • Fragments now only load when forced. On uploading, dotCMS reads the Export-Package from the fragment manifest, adds this to the OSGi-extras file, then moves the fragment to the undeployed folder and restarts the OSGi framework. This prevents interference with other plugins.
  • Improved OSGi plugin loading in server-cluster context.

dotCMS 22.03.1 LTS

Available: May 11, 2022 Demo starter image: 20220209

22.03.1 updates the recent 22.03.0 LTS release. Its changes are primarily backports from this month's 22.05 release.


  • Database connections now release properly in accordance with DB_MIN_IDLE environmental variable.
  • Fixed error preventing undeployment of OSGi plugins.
  • Pages built with URL Mapped content are now correctly created on a full-site Static Push.
    • URL Mapped content likewise shows up properly in site search indices when including folders.
  • Fixed a case where specific conditions could cause drafted content to fail to Push Publish.


  • Removed limit on number of widgets or forms displayed in Content Selector popup.
  • Unique fields on global Content Types can now be specified as unique globally or unique per site.

dotCMS 22.03.0 LTS

Available: Apr 11, 2022 Demo starter image: 20220209

(This changelog represents all changes since 21.06, spanning nine months of builds.)

Content Management

  • Content now stored as JSON, removing limits on the number of fields.
  • All dates in the system are now stored with time zone information.
  • Enabled search and aggregation on key-value pairs.
  • Added “bulk move” workflow action.
  • Added a library of icons for Content Types.
  • Added a tool for visually comparing different versions of content; access it via the History tab.
  • Added a new “what's changed” library in support of the comparison tool.
  • Introduced Headless Widgets: A single widget can now produce HTML or JSON depending on the rendering context.
  • Added default paths for image or file fields, helping editors quickly find files without digging through a file tree.
  • Bulk actions now display job progress.
  • Added thumbnails to content search listings.
  • Improved SVG handling.
  • Rules can now be used to rewrite URLs.

Page Building

  • Added a slick new Template designer; building a layout has never been simpler.
  • Content palette now allows for simple, click-and-drag content reuse.
  • You can now drag and drop local images or files into pages.

System Management

  • Added support for Bash scripts for CI/CD. You can bootstrap environments with:
    • Sites
    • Languages
    • Content Types
    • Folders
    • Files
    • Templates
    • Containers
  • Consistent identifiers: Most dotCMS unique identifiers are now assigned based on their paths or unique values. For example, if you create the file on any dotCMS instance, it will have the same identifier.
  • dotCMS can now generate secure passwords for back-end users.
  • You can now download your entire installation — including assets and a full SQL dump — from the back end. Access this feature on the admin panel under System > Maintenance > Tools.
  • Default Language can now be changed from the back end
  • Enabled users to configure most aspects of dotCMS via environment variables, including database configuration, mail configuration, and more.
  • Updated Docker image and configuration.

Apps / Integrations

  • dotCDN is now built in; view usage stats and manage your cache under the admin panel's Dev Tools.
  • App secrets can now be imported and exported.
  • New app available for Prerender integration.


  • Reimplemented Redis Cache and Redis Pub/Sub.
  • Garbage collection is now in the capable and “pauseless” hands of Shenandoah GC. This change can be overridden by passing other options to the JVM.
  • Image filters are more performant — especially with large images.
  • Sped things up by removing Sync Block from BlockPageCache.
  • GZIP now enabled by default.
  • $dotcontent.find($identifier) now relies on cache rather than elasticsearch.
  • Velocity rendering now uses cached binary metadata, requiring fewer file system calls.

Push Publishing and Bundles

  • Added Bundle Manifests: See exactly what was pushed and why in any given bundle!
  • Added a push-publishing listener, which fires from the receiver when push publishing is complete.
  • Enabled bundle delete and cleanup.
  • Large bundles are more performant: faster and more stable!

OSGi Plugins

  • Reconfigured to rely on OSGi Extras; fragments are no longer needed, though still supported.
  • SAML startup does not conflict with other OSGi plugins.


  • Static GraphQL cache can rebuild lazily and will return stale data as the cache is refreshed in the background.
  • Now supports dotAssets for file or image fields.

Breaking Changes

  • Requires Java 11 to run.
  • Only PostgreSQL and MSSQL are supported; support for Oracle has been discontinued.
  • Hazelcast cache transport layer has been removed by default. We recommend relying on a PubSub provider — either Redis or PostgreSQL — to wire your clusters. If you are running with PostgreSQL as your primary DB, there is no need to do anything. If you are running against MSSQL, we suggest running a lightweight PostgreSQL or Redis instance to provide network cache invalidations. If required, Hazelcast cache transport can be re-enabled by mounting a custom hazelcast-config into your docker image. This is the last major LTS version that will support Hazelcast as a cache transport.
  • Installations using Docker will need to update their configuration options, as they have changed.
  • Docker now runs dotCMS with the user:group 65001:65001. You will need to chown any file shares that you have mounted in in order for docker to be able to read/write assets.
  • $jsontool and $xmltool calls to localhost will be blocked by default. This behavior can be changed through a config variable.
  • Hostnames for sites are now supposed to be immutable and should not be changed once set. The hostname field for sites will now only accept DNS-valid characters.
  • /api/v2/users was incorporated into /api/v1/users. Any calls to /api/v2/users should be redirected to /api/v1/users.

On this page


We Dig Feedback

Selected excerpt: