ChangeLogs

Last Updated: Apr 7, 2022
documentation for the dotCMS Content Management System
            Older Versions →

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.

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

Version Release Date End of Life Date
v21.06.8 LTS Jun 10, 2022 Jan 13, 2023
v5.3.8.11 LTS Jun 10, 2022 Sep 30, 2022
v22.03.1 LTS May 11, 2022 Oct 11, 2023

Agile dotCMS Releases

Rows with the icon: are Breaking Change Releases. This means that upgrading to this version will require extra testing and possible architecture updates.

Please see Current Releases for downloads.

Version Release Date End of Life Date
v22.06 Jun 27, 2022 Jun 27, 2023
v22.05 May 5, 2022 May 5, 2023
v22.03 Mar 14, 2022 Mar 14, 2023
v22.02 Feb 9, 2022 Feb 9, 2023
v22.01 Jan 10, 2022 Jan 10, 2023
v21.11 Nov 15, 2021 Nov 15, 2022
v21.10 Oct 11, 2021 Oct 11, 2022
v21.09 Sep 7, 2021 Sep 7, 2022

dotCMS 22.06

Available: Jun 27, 2022

This enormous release in fact represents a development period closer to two months than one — and it shows! The entries below include significant additions to the Block Editor field, a flotilla of bugfixes, a bushel of efficiency improvements, some dependency updates, and more!

Content

  • Block Editor can parse a wider array of blocks, with permissive handling of custom block types, and is simpler to render. #22074
  • When inserting contentlets into a Block Editor field, you can now filter the selections by language or Content Type. #22159 #22045
  • It is now possible to whitelist the types of blocks that a creator can use within a Block Editor field, using a field variable containing a list of the usable blocks. #22163
  • From the Block Editor, it is now possible to import an external image as a dotAsset with a single click. #22194
  • In addition to drag and drop, images can now be added to the Block Editor by pasting. #22018
  • Block Editor can now be styled through the use of a field variable: Just set the key styles to value of the the desired CSS string. #22037
  • A Push Remove Now action has been created to facilitate push-removal within a workflow. #22021
  • Added a block-deletion button to bubble menus in the Block Editor. #22017
  • You can now disable image drag & drop in a WYSIWYG field by setting the field variable dragAndDrop to false. #21466

Enhancements & Adjustments

  • Improved implementation of the unique-per-site field quality; instead of a config property, this is now handled via the uniquePerSite field variable, which defaults to false. #22250
  • Refactored and improved the Block Editor's .toHtml() method, making it more lightweight, comprehensive and maintainable. #22128
  • Refactored HostAPI: Improved caching and respect for permissions; now reliant on the database instead of ElasticSearch, and on variable names instead of Content Type names. #21476
  • Implemented lazy loading for workflow histories to improve load times for history-rich content. #22068
  • Example content makes more consistent use of <PostBody> tag. #22063
  • Updated dependency packages, including ProseMirror, TipTap, and Tomcat. #22058 #21849
  • Edit Mode Anywhere now works in AWS Amplify and other hosting platforms. #21877
  • Now compatible with Husky. #21857
  • All references to calendar_reminder table have been removed from databases and code base. #21917
  • 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
  • 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
  • Search and filter functionalities have been added to the log viewer. #21848
  • Push Publishing filters can now be added or updated via a REST API call. #21823
  • Add custom content tools to the UI navigation through a simple menu option in the Content Type list, or through an API call. #21797
  • 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
  • Moved the System Template and System Containers to velocity's static WEB-INF/velocity/application path. #21265
  • Date and time fields have been modified in MSSQL databases to take into account time zones. #21169
  • Added an app that implements the prerender.io filter as a WebIntercepter and allows a user to configure prerender via Settings > Apps > dotCMS prerender App. #20903
  • Switched to using Tomcat's RemoteIpValve for DNS resolution. #19569
  • Updated dot-binary-file web component to support the maxFileLength attribute. #18019

Bugfixes

  • GraphQL queries no longer throw errors when fetching Block Editor content. #22391
  • An error that could cause OSGi import procedures to fail has been corrected. #22287
  • Creating new content from Edit Mode now properly adds it to the Page when saved. #22210
  • Changed default path of images within WYSIWYG fields to be based on ID rather than iNode, to prevent the path from breaking on file update. #22207
  • Fixed errors with processing and saving of inline HTML on the WYSIWYG editor. #22179 [#22176]
  • Improved handling of unrecognized properties in JSON to restore backwards compatibility with versions prior to 22.03. #22174
  • Fixed error that caused content to disappear from a page after altering its template or layout. #22140
  • Pages with the show_on_menu option enabled no longer create exceptions in procedures that reorder navigation elements. #22137
  • 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
  • Fixed issue with database export streams that caused connection closure before file generation in instances behind a load balancer. #22116
  • Enter key in the dialog to create or copy a Content Type now executes the operation, instead of moving focus to the icon selector. #22104
  • No HTML field-validation regular expression no longer invalidates an entry if it detects a period. #22094
  • Velocity rendering of Block Editor correctly displays all nested nodes. #22092
  • Bundled content not assigned to a workflow will no longer fail to push publish. #22087
  • Fixed error preventing Override plugin from functioning. #22043
  • PageCache now only caches with response codes of 200. #22014
  • Importing a contentlet containing a binary field with a null value no longer generates an error. #22004
  • Pulling related content with no sorting parameter set now returns related content in the order it was added. #21929)
  • Tags considered to be stored under specific sites rather than All Sites no longer fail to display. #21904
  • Push Removal of a Static Pushed page no longer removes any other files required for that page to render. #21832
  • Flag icons now display properly next to languages in the content list. #21827
  • Static Push Publishing no longer sets an incorrect response type for content generated on a dynamic page. #21720
  • Fixed bug that caused failures when copying a site. #21718
  • User interface no longer displays an erroneous Type Error when uploading files via image fields. #21715
  • Fixed WebP filter: no longer adds white background in Safari, and default quality no longer ruins perfectly good images. #21694 #21652
  • Push publishing plugins no longer results in error. #21568
  • Updating a Binary field via REST API no longer removes the value from other Binary fields in the same contentlet. #21482
  • When saving content via REST and using the WAIT_FOR index policy, the call will now properly pass down the parameter instead of defaulting to DEFER. #21469
  • Fixed license requirement message in the Personas tool on the community edition. #21307
  • Container removed from Advanced Template Designer now correctly disassociates from the template, and can be deleted. #21099
  • Using Select All on categories before deleting no longer deletes even deselected items. #20400
  • Fixed bug preventing content from exporting when all languages are selected. #19734
  • Form submissions send files correctly. #18312

Visual fixes

  • The read-only system container and system template are now more visually clear as to this status, with a greyed-out color scheme and contextual buttons removed. #22216 #22217
  • 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. #22198
  • Context menus, such as those behind the “hamburger” buttons in the Content Type menu, now display one at a time. #21996
  • Minor improvements to the Edit Content Type window in the admin panel.
  • Fixed pop-up that appears when dragging and dropping the Form Content Type to a container. #21747
  • Content Types with two Relationship fields of the same type no longer display list of crossed-out unavailable languages. #21735
  • Toggling the Code view in a WYSIWYG field on Content Type that requires scrolling no longer causes the scroll position to jump. #21492

Plugins

  • 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 and allows OSGI to be cleanly started. #22055

Breaking Changes

  • Replaced repackaged JSON-handling classes with more tractable code. #22118
  • Updated several default configuration values, such as disallowing HTTP by default. #22006
  • Removed unnecessary Spring jars for better parsimony and tidiness. #21944
  • Initial admin password is now an automatically generated, non-guessable password recorded in the logs. Setting the configuration option INITIAL_ADMIN_PASSWORD can allow for overriding the generated password with a preset one. #21916
  • Moved to use Gradle 7.3.3 in the build scripts.
  • AspectJ has been removed. Instead, Bytebuddy is now inited at runtime and rewrites the bytecode to weave the annotations into the classes. Additionally, ByteBuddy does not need to be included as a java agent.

dotCMS 21.06.8 LTS

Available: Jun 10, 2022

Bugfixes:

  • 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.
  • Changes to SCSS files are now recognized and processed immediately, without any delays from caching behavior.
  • Fixed navigation error affecting users with both Back-End User and Front-End User roles; URLs now update correctly when editing multiple page assets sequentially.
  • When a Site/Folder field is removed from a Content Type, content of that type will continue to live where it was originally placed, rather than move to SYSTEM_HOST.
  • Fixed issue in which dotAsset titles would display as their identifiers on certain admin panel searches.
  • Can now load extremely large images — whether vast in dimensions or file size — without issue.

Content:

  • Removed limit on number of widgets or forms displayed in Content Selector popup.

Enhancements:


dotCMS 5.3.8.11 LTS

Available: Jun 10, 2022

As a late-stage LTS build, dotCMS 5.3.8.11 consists chiefly of bugfixes and corrections. One such correction concerns its end-of-life (EOL) date. While longstanding policy holds that LTS releases are supported for 18 months, several recent releases had listed an EOL date 24 months out from original launch. This error was recently corrected; the 18-month EOL mark for 5.3.8 was June 3, 2022, which has now passed.

We realize that some users may have made plans around the erroneous EOL, and we apologize for this oversight. Accordingly, we have elected to extend support for 5.3.8 until at least September 30, 2022, with a possible further extension pending review. dotCMS always reserves the right to extend the EOL date for any release if we believe that we can continue to apply updates without affecting its stability.

Please note that “end of life” does not mean “end of service”; customers with access to the dotCMS Helpdesk can always ask for support on any dotCMS release, including those past their EOL.

Bugfixes:

  • 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.
  • Changes to SCSS files are now recognized and processed immediately, without any delays from caching behavior.
  • Fixed navigation error affecting users with both Back-End User and Front-End User roles; URLs now update correctly when editing multiple page assets sequentially.
  • When a Site/Folder field is removed from a Content Type, content of that type will continue to live where it was originally placed, rather than move to SYSTEM_HOST.
  • Fixed issue in which dotAsset titles would display as their identifiers on certain admin panel searches.
  • When creating rules, users can now choose the session attribute keys to use to evaluate conditions, such as whether a session attribute exists.
  • Contentlet buttons no longer fail to display on Edit Mode with an Edit Mode Anywhere page.

Content:

  • Removed limit on number of widgets or forms displayed in Content Selector popup.

Enhancements:

  • In Edit Mode, added lazy loading for buttons when editing contentlets within a page.
    • Minor style improvements to Edit Mode.

dotCMS 22.03.1 LTS

Available: May 11, 2022

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

Bugfixes:

  • 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.

Content:

  • 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.05

Available: May 5, 2022

As the flagship feature of version 22.05, we unveil our new Block Editor, a JSON-based WYSIWYG editor.

Inspired by such interfaces as WordPress's Gutenberg Editor, the Block Editor is an easy-to-use, feature-rich interface for creating and editing content — whether text, images, or any other custom content defined through dotCMS. We hope you'll enjoy it!

Our demo site has been updated to feature the Block Editor on blog posts. Test it out for yourself with email address admin@dotcms.com, password admin.

Bugfixes:

  • Resolved Javascript console errors that resulted from adding a pre-existing widget to a page.
  • Fixed Enterprise Edition license check misfiring on some page edits.
  • Fixed bundle errors when reimporting a previously imported folder that has been renamed.
  • Fixed the Show Archive checkbox in the Templates section.
  • Pages built with URL Mapped content are now correctly created on a full-site Static Push.
  • Fixed a case where specific conditions could cause drafted content to fail to Push Publish.

Visual fixes:

  • Fixed cases of contextual menus cutting off at the bottom of their parent display pane.
  • Improved display for “Add Row” button in the Content Type creation interface.
  • License info renders more cleanly on Create Content modal dialog.

Content:

  • New Block Editor (see above).
  • Added ability to copy Content Types.
  • Replaced Vanity URL base content type's Site field with a Host Folder field.
  • Removed limit on number of widgets or forms displayed in Content Selector popup.
  • Page titles now update to display the name of content being edited; multitab without fear!
  • Unique fields on global Content Types can now be specified as unique globally or unique per site.
  • Optimized saving procedures to improve performance.
  • Improved clickability when relating content — click anywhere in the list's rows to toggle!
  • Implemented storage of content info as JSON for MSSQL databases — as previously implemented for PostgreSQL.

Plugins:

  • Improved OSGi plugin loading in server-cluster context.
  • Fixed error preventing OSGi plugin undeployment.
  • Fixed ability to upload multiple OSGi assets at once.

Enhancements & Adjustments:

  • Changed folder handling to enforce knowable & consistent folder ID behavior.
  • Added ability to create a whitelist of acceptable keys for Key/Value fields.
  • Reinstated Publishing options in Template editor.
  • JSON handling: Removed GSON dependency in favor of Jackson.
  • Added integration tests for Integrity Checker.
  • Edit Mode Anywhere app no longer sends the page.rendered property on POST unless enabled in the app.
  • Optimized routines for bulk adjustment of permissions.

dotCMS 22.03.0 LTS

Available: Apr 11, 2022

(This changelog represents all changes since 21.06, spanning nine months of agile 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 demo.dotcms.com/my-first-image.jpg 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.

Performance

  • 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.

GraphQL

  • 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.

dotCMS 22.03

Available: Mar 14, 2022

dotCMS 22.03 is made up of 44 fixes, improvements and new features. For more detail, the whole list of issues included in dotCMS 22.03 can be found on GitHub.

New Features and Enhancements

  • Moved to Shenandoah Garbage Collector. Shenandoah is a “pauseless” garbage collector that also has the benifit of quickly returing unused memory back to the underlying operating system, rather than greedly holding on to it. Operationally, this results in dotCMS needing/using less memory over time, which is very important for density when running dotCMS in orchestrators. This change in the default garbage collection can be overridden by passing other options to the JVM.
  • Better FS Caching. Binary file properties that are referenced in Velocity, e.g. $content.image1.width now rely on the assetMetadataCache to return things like size and image dimensions, rather than relying on slower operations that use the filesystem and often traverse the network with NFS.
  • Legacy Data Model Improvements. Folders no longer rely on hiberate object mapping to persist data.
  • Docker Image now uses Amazon's Corretto OpenJDK 11 under the covers. This change was made because Amazon's OpenJDK is supported over a long term and also contains a backported version of the Shenandoah Garbage Collector, which dotCMS (docker) now uses by default. This change should not affect how dotCMS is launched or run.
  • It is now possible to disable drag and drop image upload from the WYSIWYG field. To do this, you need to add a field variable dragAndDrop with the value set to false.

Security

  • When writing tmp files for newly uploaded files, the filenames are now scanned and rejected if they contain directory escaping characters, e.g. ../.

Changes/Improvements

  • Ticked up our versions of Angular to 13.1.3 and PrimeNg to v13.1.0.
  • CalendarEvents content type can now be deleted without causing a system error.
  • Elasticsearch Client was upgraded to v7.10.2.
  • Users with both backend and frontend roles can now preview/edit pages.
  • Langauge Keys for backend i18n are now stored using the dotCMS version as the key, and will be automatically refreshed when the dotCMS version updates.
  • The background is pleasingly blurred when a modal window is popped up in the backend.

Breaking Change


dotCMS 21.06.7 LTS

Available: Mar 9, 2022

dotCMS 21.06.7 is a LTS release which includes several improvements, and fixes for several issues in previous releases.

Fixes

The 21.06.7 release includes fixes for the following reported issues.
For a list of issues addressed in dotCMS 21.06.7, please visit the dotCMS Github Repository.

Issue Github Link
[Site Copy] : Copying a Site randomly fails #21204
db passwords with characters (specifically @ and possibly others) will break pub/sub due to the connection string #21363
Add the ability to stop/abort a workflow on velocity script actionlet #21252
Past Time Machine not working #21097
SAML - Allow expression substitution from SAML roles mapped to dotCMS roles by role key #20773
Unable to push publish user #20805
We need to obfuscate some environmental variables #20757
Sanitizing file name #21791
Large Bundles make the viewing publishing queue slow #20971
[Push Publishing] : Single quote in content's title breaks JavaScript code in the portlet #21699

dotCMS 5.3.8.10 LTS

Available: Mar 8, 2022

dotCMS 5.3.8.10 is a LTS release which includes several improvements, and fixes for several issues in previous releases.

Fixes

The 5.3.8.10 release includes fixes for the following reported issues.
For a list of issues addressed in dotCMS 5.3.8.10, please visit the dotCMS Github Repository.

Issue Github Link
Obfuscate Environmental Variables System Info Portlet #20757
SAML - Allow expression substitution from SAML roles mapped to dotCMS roles by role key #20773
Unable to push publish user #20805
Past Time Machine not working #21097
[Site Copy] : Copying a Site randomly fails #21204
Add the ability to stop/abort a workflow on velocity script actionlet #21252
[Push Publishing] : Single quote in content's title breaks JavaScript code in the portlet #21699
Sanitizing file name #21791

dotCMS 22.02

Available: Feb 9, 2022

dotCMS 22.02 is a fairly large release that consists of 89 fixes, improvements and new features. For more detail, the whole list of issues included in dotCMS 22.02 can be found on github.

New Features

  • Content Editors rejoice — the content palette now allows for simple, click and drag content reuse.
  • GraphQL now supports dotAssets (in addition to normal FileAssets) on File and Image fields
  • Download a full sql dump and asset backup via api/Admin Screen (Postgres/Docker only).
  • See job progress when running Bulk Actions across large numbers of contents.
  • New Host Integrity Checker to ensure that the hostnames/id match across push publishing environments.
  • Updated Docker Image, removed legacy configuration process and removed “special” docker environmental variables that were used only in dotCMS docker, unifing them with the variables that the dotCMS binary expects.
  • Moving forward, environmental variables should be used to configure (almost) everything. If you need to configure something outside of what can be done via environmental variables, you should be prepared to either build a custom dotCMS docker image or mount in an override file.
  • GZIP enabled by default in tomcat and is configurable via environmental variables.
  • SMTP server now supports SMTPS and STARTTLS and should be configured via environmental variables.
  • HTTP Responses now include a header x-dot-server that identifies which server in a cluster is responding. This can be disabled if needed.
  • New velocity script actionlet can be used to abort an in-flight content workflow.

Changes/Improvements

  • Site selector type searches uses wildcards, which is very helpful when searching/switching sites in multi-tenanted environments.
  • Forms no longer require CSP “unsafe-eval” to be used.
  • “What's changed” diff takes place on the client side and no longer uses outdated XML java libraries.
  • Robustification - now the backend relies more on db than Elasticsearch. Previously, if the Elasticsearch index was down or broken, dotCMS could not render front end pages, navigation, templates or the site browser. Now these work. Github issues: #21284, #21283, #21385, #21360.
  • Changed to FILE_SYSTEM for metadata storage by default. This changes from the previous incorrect default of storing the metadata in the db and prevents runaway DB load when cold starting a dotcms cluster.
  • Fixed race condition when copying host.
  • Removed noisy log when using edit mode.
  • Removed unnecessary SAML logging.
  • Allow dotCMS docker image to be build using GID=0, helpful when building a dotCMS image for openshift.
  • Added “Bring Back” button to the new content compare screen.
  • Removed a number of old/unused dotmarketing-config.properties that caused confusion.

Breaking Changes

  • Installations using the dotCMS docker image will need to update their configurations and supply different environmental variables to configure dotCMS properly. Please see the “Docker Image Configuration Options” page on how to properly configure the dotCMS docker image.
  • Hazelcast config removed from docker image. If you need to configure hazelcast, you will need to specifiy it as a cache provider and mount in a custom hazelcast-config.xml.

dotCMS 5.3.8.9 LTS

Available: Jan 18, 2022

dotCMS 5.3.8.9 is a LTS release which includes several improvements, and fixes for several issues in previous releases.

Fixes

The 5.3.8.9 release includes fixes for the following reported issues.
For a list of issues addressed in dotCMS 5.3.8.9, please visit the dotCMS Github Repository.

Issue Github Link
[Static Publishing] : Problem with multi-language contents #21537

dotCMS 5.3.8.8 LTS

Available: Jan 13, 2022

dotCMS 5.3.8.8 is a LTS release which includes several improvements, and fixes for several issues in previous releases.

Fixes

The 5.3.8.8 release includes fixes for the following reported issues.
For a list of issues addressed in dotCMS 5.3.8.8, please visit the dotCMS Github Repository.

Issue Github Link
Revert bad commit #19842

dotCMS 5.3.8.7 LTS

Available: Jan 11, 2022

dotCMS 5.3.8.7 is a LTS release which includes several improvements, and fixes for several issues in previous releases.

Fixes

The 5.3.8.7 release includes fixes for the following reported issues.
For a list of issues addressed in dotCMS 5.3.8.7, please visit the dotCMS Github Repository.

Issue Github Link
Update log4j to 2.17 #21441
Content Export tool is not exporting relationships correctly #20746
Push publishing sometimes changes the order of contentlets in the multi-tree table on multilingual pages #21313
200 redirects to external links are not rendering properly #21198
Large Bundles make the viewing publishing queue slow #20971
Delete All Bundles does not really delete all bundles #20812
Contentlets with future publish date prevent it from being Push Published #20765
[Reindex] : Perform Site check before Folder check #20722
"Login As" Data Constraints #20721
NPE on tags via graphql if no tags present #20719
[Vanity URL] : Missing parameters in Vanity URL cause problems in API #20685
IndexPolicy do not respected on wf toolview #20649
Tika failing to init, hanging dotCMS startup #20640
Container displays Add button twice under specific situations #20623
Button for Navigation Reorder is not working correctly #20616
Class in rows are lost when you remove a row #20519
Error retrieving content references in multilingual setup #20494
Concurrency Issues with loadPermission #20464
Unable to load very large images #20446
[Content] : Many to One relationship not displaying in Content Search #20399
Large bundles can take too long for load balancers #19321

dotCMS 22.01

Available: Jan 10, 2022

New Features

  • Unlimited fields on content / content stored as JSON. Currently available in Postgres with plans on targeting MSSQL next.
  • New content version compare screen shows a field by field comparison of what's changed on any give content.
  • Widgets can render both markup and as json, allowing widgets to be used in headfull and headless implementations simultaneously.
  • New Redis Pub/Sub and Cache Provider. Uses the Lettuce library under the covers, allows a cluster wide 2nd level cache to improve cold startup performance on large sites. The new Redis implementation also allows the pub/sub cache invalidation mechanism to be used when primary datastore is not Postgres.
  • Default folders can now be set for image/file fields, rather than always having to browse from the site root, giving a better end user experience.

Changes/Improvements

  • Site “Host Name” is renamed “Site Key” and once set, users are discouraged from changing site keys. The “Site Key” should be treated and understood as immutable and should not be changed over the lifecycle of a site.
  • Site Key (hostnames) can only accept characters that are valid for server/DNS names.
  • ContentTypeAPI can now filter content type results by site/host.
  • SAML authentication now correctly stores the last ip for the authenticated user
  • $dotcontent.find("{id}") no longer uses elasticsearch to pull proper lang/version resulting in better performance and less log spamming from velocity.

Security Fixes

  • Updated Log4j2 to 2.17.1, added {nolookups} to log4j2.xml config file, start java with -Dlog4j2.formatMsgNoLookups=true github #21485, #21393. See
  • Prevent XMLTool from fetching remote entities github #21415
  • Remote Calls - XMLTool, JSONTool and VanityUrl Proxy calls are now blocked for localhost and private networks by default. This is best practices as per OWASP security standards. This behavior can be disabled using configuration properties. github #21415
  • TempFileAPI will only import by URL if user is an admin github #21400
  • User.userId is now immutable once initialized github #21392

Breaking Changes

  • UID/GID in our docker image has changed to 65001:65001. Previously, it was 1000000000:1000000000. In order to run the new dotCMS docker image, you will need to make sure that the user on your host has the proper uid/gid and that your shared assets folder that map into docker have the proper ownership. As an example:
    usermod -u 65001 dotcms
    groupmod -g 65001 dotcms
    chown -R dotcms.dotcms /assets/folder/root
    
  • In Postgres implementations, content is now stored as JSON. This means if there is custom code that is directly queuing the contentlet table in the db (tisk, tisk, as this is bad practice), these queries will no longer work.
  • Remote Calls - XML, JSONTool and VanityUrl Proxy calls are blocked for localhost and private networks by default. This is best practices as per OWASP security standards. If your implementation makes local calls using these tools, you can change/configure the network blacklist by setting a config variable.
  • Site.hostname field can only accept characters that are valid for server/DNS names (via the ui).

More Information

For more detail on what is included in 22.01 release, please see the tagged github issues


dotCMS 21.06.4 LTS

Available: Dec 13, 2021

dotCMS 21.06.4 is a LTS release which includes several improvements, and fixes for several issues in previous releases.

Announcements, Deprecations and Breaking Changes

  • Breaking Change: The rest call /api/v2/users no longer exists please use /api/v1/users instead. Any use of /api/v2/users needs to be replaced.

Improvements in dotCMS 21.06.4

  • Improved error messages for WorkflowAPIImpl. (#20636)
  • Added the option to choose what fields are shown in a relationship field's overview. (#19215)
  • Added automatic deletion of old inactive Elastic Search indices to prevent performance slowdowns. (#19931)
  • Made multiple improvements to Site Resource. (#20557)
  • A bulk move action is now available on the content search screen. (#20504)
  • License.zip files will not be moved, rewritten or duplicated on startup.(#20591)
  • Moved to glibc based Docker image from a musl based Docker image. (#20666)
  • Edit Mode Anywhere now always expects UTF8. (#20629)
  • Additional GraphQL logging was added. (#20764)

Fixes

The 21.06.4 release includes fixes for the following reported issues.
For a list of issues addressed in dotCMS 21.06.4, please visit the dotCMS Github Repository.

Issue Conditions Github Link
Duplicates of the same language were allowed to be created. A language should not be able to be created if a language with the exact same values already exist. #7342
In specific situations the network information did not show on the network tab and an error was produced. Only occurred when a license was applied for the first time and the network tab was navigated to right after. #20647
IPUtils was sometimes returning false incorrectly. Only occurred when a specific IP utilizing a \ was passed in. #20578
Users sometimes were unable to create a multilingual blog. Only occurred on the populate content for language page where the default content is shown. #20505
Workflow could not be copied in certain circumstances. Only occurred when the Notify Assigned action was included in the workflow. #20501
URL field values were not included in pages in certain situations. The URL field values were not included when the page was exported from Content->Search. #20405
User couldn't view or edit a piece of content when it has certain multilingual properties. Only occurred when that content referenced a non-default language on a page that didn't exist in the default language. #20494
Copy workflow button sometimes resulted in incorrect next steps. Only occurred sporadically. #18111
Generating a resource link for file assets in certain circumstances failed. Only occurred when the file asset had a legacy identifier. #20597
Contentlet sometimes failed to render and threw an error in certain cases. Only occurred for content that had a file or image in its Content Type and the file/image was not published when the user was viewing the page. #18014
The add content button was sometimes showing up twice when adding or moving content in a specific container. Only occurred the dotCMS instance had legacy data. #20623
Update site was not correctly updating the aliases. This occurred when you Updated the site via the REST call. #20638
In certain situations when running containerized dotCMS initialization was getting stuck. Only occurred when new nodes were coming up and Tika was trying to initialize. #20640
Settings were sometimes not respected when an image was inserted into the WYSIWYG. Only occurred when WYSIWYG_IMAGE_URL_PATTERN was set on the image. #20642
Widgets index policy on a page was sometimes overridden by the default. Only occurred when an index policy was set in a code snippet widget on the page. #20649
Error was created when certain response header rules were set. Only occurred when the header required single quotes. #20659
Users were not allowed to push publish in another time zone in certain situations. Occurred when the user was trying to push publish in another timezone at a time that has already past in there current timezone. #20674
Users were able to login as all users in certain situations. Occurred when a user did not have login as permissions but were still able to use it. #20677
Vanity URLs could be created without required data. The vanity URL could be created without the title and the forward to field filled in. #20685
Site name was not able to updated a specific way. Issue occurred when trying to update a site name via the Update Site REST call. #20688
dotCDN was not invalidating the correct information on prod ion certain situations. Issue occurred when push publishing data that had been invalidated on auth. #20690
Error occurred when upgrading to 21.06 with a specific dotCMS setup. Issue occurred when a managed database was being used. #20725
OutOfMemoryError occurred when the user tried to import a Bundle Occurred when many events were triggered at the same time. #20799
Users would sometimes see a multilingual site in the wrong language. Occurred when the site was static and the default language was selected. #20469
Pulling tags with GraphQL returned an error in logs in specific circumstances. The error only occurred there were no tags existing. #20719
Classes assigned to rows in layout designer were removed in certain situations. Only occurred when one row in the layout designer was deleted all the rows below it would be effected. #20519
An exception was thrown on a fresh installation of the full starter depending on the database used. The exception was only thrown if MSSQL was used as the database. #20669
Image paths and CSS file paths were sometimes incorrect after a Static Publish or Time Machine run. Only occurred when the image path and dimensions were passed in a code snippet widget. #20707
Running fix conflicts after running an integrity check caused errors in specific situations. The error only occurred when trying to fix folder conflicts. #20714

dotCMS 5.3.8.6.2 LTS

Available: Dec 13, 2021

dotCMS 5.3.8.6.2 is a LTS release which includes several improvements, and fixes for several issues in previous releases.

Fixes

The 5.3.8.6.2 release includes fixes for the following reported issues.
For a list of issues addressed in dotCMS 5.3.8.6.2, please visit the dotCMS Github Repository.

Issue Conditions Github Link
Log4j2 zero day exploit https://nvd.nist.gov/vuln/detail/CVE-2021-44228. #21393
Make userId immutable. Once a user object has been created/inited, you should not be able to edit the userId.. #21392
Upgrade log4j version to permit JsonLayout custom key-value pairs. Allows key-value pairs in Json for k8s and docker. #20792

dotCMS 21.11

Available: Nov 15, 2021

dotCMS 21.11 is a release which includes several improvements, and fixes for several issues in previous releases.

Improvements in dotCMS 21.11

  • Added multiple improvements to the import action in the Apps module. (#19747)
  • Added improved messaging about how to add Apps. (#18707)
  • Added a static cache to GraphQL to help with heavy queries.(#19981)
  • Added the ability to change the default language in the UI.(#20887)
  • Added the ability to generate secure passwords for users. (#20915)
  • Combined Default Content View was added in Content Search. It includes the thumbnail and details. (#21014)
  • Improvements were added to improve the handling of SVG images.(#21051)
  • We have removed the repackaged xbill DNS jar that contained classes under com.dotcms.repackage.org.xbill.DNS.*. Customers should instead reference these classes here: org.xbill.DNS.*.(#20940)

Fixes

The 21.11 release includes fixes for the following reported issues.
For a list of issues addressed in dotCMS 21.11, please visit the dotCMS Github Repository.

Issue Conditions Github Link
A search in Content Search was sometimes returning zero results . Only occurred when a date from advanced search was used. #20667
Instances created with a different default language then the current default language sometime broke after an upgrade. Only occured if upgrading to a version past 20.10. #20786
Some bundles were taking a long time to load on the publishing queue screen. Issue occurred when pushing on bundling a bundle with over 10,000 pieces of content. #20971
In page edit mode contents sometimes moved around.. Issue only occurred when preparing to drag and drop contents. #21047
Content were not always being updated. Only occurred when a search was filtered then the user switched to the other view type (card or list). #21153
An error sometimes occured when trying to drag and drop content in edit mode. Only occurred when clicking on the middle of the content to drag instead of the draggable frame. #21180
Error would sometimes occur when trying to see the bundles in the history tab. Only occurred when bundles were just uploaded to the server. #21202
Bundle status sometimes failed to update. Only occurred after retrying the push of a bundle. #21124
Not all map properties were returned in some instances. Only occurred after content was saved. #20948

dotCMS 21.10

Available: Oct 11, 2021

dotCMS 21.10 is a release which includes several improvements, and fixes for several issues in previous releases.

Improvements in dotCMS 21.10

  • Improved how we save timezone information.(#20899)
  • Improved logging for rules. (#20880)
  • Improved Reindex log messages. (#20821)
  • New dotCMS endpoint /v1/system-status/alive to check if the server is up.(#20827)
  • Batik dependency was removed.(#20847)
  • dotCMS now releases licenses on shutdown. (#20856)
  • Type selector will no longer show when searching in a portlet with only one type. Like the image portlet. (#20861)
  • Replaced Moment.js library with the date-fns library.(#19784)
  • Warning log messages were updated when the user is lacking permissions to view a catagory associated with the contentlet.(#20801)
  • Improved error message for when an invalid shard is entered in the creation of a site search index. (#17569)

Fixes

The 21.10 release includes fixes for the following reported issues.
For a list of issues addressed in dotCMS 21.10, please visit the dotCMS Github Repository.

Issue Conditions Github Link
Hooks were sometimes prevented from being registered when certain changes where made to the MANIFEST.MF. Only occurred when the plugin version was modified in MANIFEST.MF. #17959
Users sometimes recieved a Java Script error when trying to use certain buttons in the maintenance portlet. Occurred when the user tried to use the Update System Logging and Refresh buttons on the log files tab. #18908
The enter key was not also recognized as submit. Issue occurred when creating a bundle and enter was pressed after typing a bundle name. #19042
It was sometimes possible to add empty tags in certain areas causing errors. Issue only occurred in the rules portlet. #19909
Many to one relationships where not always displayed correctly. Only occurred when a user seached for many to one relationships in the content search. #20399
Some users were able to start ES queries that they did not have permission to run causing errors. Only occurred in multitenant ES environments. #20596
A contentlet was sometimes prevented from being published . Only occurred when the contentlet had a future publish date. #20765
Some emails were sometimes seen as spam by mail services. Only occurred for emails sent from workflow actions which were sent from hard-coded email addresses with non-existent domains. #20777
A piece of content was sometimes in the wrong workflow set. Only occurred on the reciever side after a push publish. #20718
The Host select box was not displaying on the theme paginator in certain circumstances.. Only occurred when there were multiple cloned sites. #20781
The page API was sometimes returning the wrong publish date in its JSON. Only occurred when the page contained a contentlet with the publish date field. #20791
Icons in grid view were not showing properly in the upload fields modal in certain circumstances. Only occurred when trying to attach an image from the WYSIWYG fields or the task list. #20817
When a Site/Folder field was removed from a content type all the contents sometimes moved to System_Host Only occurred when the content type lived somewhere other then System Host. #20850
In certain areas timezone searchs were only matching against the first characters. Only occurred in the company portlet. #20888
Retry bundle wasn't always working. Occurred on the status popup and the listing screen. #20974, #20878
Time machine did not always work. The issue only occurred after creating a new snapshot. #21097
Multiple issues occurred with Oracle. Including inability to start dotCMS with an Oracle DB, and issues occurred with Oracle licenses as well. #21128, #21119

dotCMS 5.3.8.6.1 LTS

Available: Oct 7, 2021

dotCMS 5.3.8.6.1 is a LTS release which includes several improvements, and fixes for several issues in previous releases.

Improvements in dotCMS 5.3.8.6.1

  • Improved error message for deleting a container used by a template. (#20277)
  • Added the option to choose what fields are shown in a relationship field's overview. (#19215)
  • Added automatic deletion of old inactive Elastic Search indices to prevent performance slowdowns. (#19931)
  • Added header identifying what vanity URL directed the user to the page to help simplify debugging. (#20416)
  • Improved how external caches and the dotCMS internal cache interact. (#20412)
  • Improved error messages for WorkflowAPIImpl. (#20636)
  • Edit Mode Anywhere now always expects UTF8. (#20629)
  • Improve concurrency issues.(#20507)
  • dotCMS is now fully ARM supported. (#19192)
  • The cache is now flushed when the push publishing filter files are changed. (#19152)
  • Additional GraphQL logging was added. (#20764)
  • Warning log messages were updated when the user is lacking permissions to view a catagory associated with the contentlet.(#20801)
  • The ability to customize TinyMCE and set it systemwide is now part of dotCMS. (#19651)

Fixes

The 5.3.8.6.1 release includes fixes for the following reported issues.
For a list of issues addressed in dotCMS 5.3.8.6.1, please visit the dotCMS Github Repository.

Issue Conditions Github Link
Workflow modal failed to open in certain circumstances. Only occured when selecting available workflow actions for all content in the content search for the content type, date, with more than 40 results. #19677
Subfolders in the site browser were not in alphabetical order in certain circumstances. Only occured when a folder's name was changed. #20104
An infinite loop sometimes happened for specific vanity URLs. Only occured when the vanity url had a 301/302 HTTP redirect from a URL with a trailing slash to the same url with no trailing slash. #20280
Unexpected behavior was happening when statically pushing some file assets. Only occured when the file asset name had spaces in it. #20295
Workflow could not be copied in certain circumstances. Only occurred when the Notify Assigned action was included in the workflow. #20501
URL field values were not included in pages in certain situations. The URL field values were not included when the page was exported from Content->Search. #20405
Error sometimes occured when deleting or moving a field in a Content Type. Only occured for some fields when they were related to another field. #20342
Copy workflow button sometimes resulted in incorrect next steps. Only occurred sporadically. #18111
An error would sometimes occur for sites with lots of cookies. Only occured when either of the following properties were set as shown below: COOKIES_HTTP_ONLY=TRUE or COOKIES_SECURE_FLAG=always/https. #20334
User with frontend permissions was sometimes seeing blank pages in certain situations. Only occurred the user also had backend permissions. #20452
The page API was sometimes returning the wrong publish date in its JSON. Only occurred when the page contained a contentlet with the publish date field. #20791
Problems trying to login from a PC.. Only occured when MSSQL as the DB #20499
IPUtils was sometimes returning false incorrectly. Only occurred when a specific IP utilizing a was passed in. #20578
Settings were sometimes not respected when an image was inserted into the WYSIWYG. Only occurred when WYSIWYG_IMAGE_URL_PATTERN was set on the image. #20642
The User Resources endpoint wasn't parsing some parameters correctly. Occured when the parameters includeAnonymous and includeDefault parameters were not being respected. #20450
A Workflow Scheme was not always able to be imported. The issue only occured when the next assign or permission role did not exist. #20488
Elastic search was sometimes getting overwhelmed with index requests. Only occured in clustered environments when doing a full reindex, bulk repermissioning or unding the definition of a major content type. #20568
The "Site or Folder" field dropdown sporadically disappeared. Only occured for some content types in edit mode. #20270
dotCDN was not invalidating the correct information on prod ion certain situations. Issue occurred when push publishing data that had been invalidated on auth. #20690
Date was sometimes parsed incorrectly in certain situations. Issue occurred when a bundle was being created.. #20766
Users would sometimes see a multilingual site in the wrong language. Occurred when the site was static and the default language was selected. #20469
Hanginging on the front end was sometimes experienced. The error only occurred when a user was creating multiple independent SCSS files that were compiled separately using a build in compiler. #18301

dotCMS 21.09

Available: Sep 7, 2021

dotCMS 21.09 is a release which includes several improvements, and fixes for several issues in previous releases.

Announcements, Deprecations and Breaking Changes

  • Breaking Change: The rest call /api/v2/users no longer exists please use /api/v1/users instead. Any use of /api/v2/users needs to be replaced.

Improvements in dotCMS 21.09

  • Images can be added to a page using drag and drop. (#18411)
  • A downloadable bundle manifest is now available for each bundle. (#20010)
  • Icon picker and sort_order are now available on the content type screen and on the database. (#20426)
  • Created content resource that can be found by id or inode. (#20429)
  • A bulk move action is now available on the content search screen. (#20504)
  • License.zip files will not be moved, rewritten or duplicated on startup.(#20591)
  • Improved error messages for WorkflowAPIImpl. (#20636)
  • Added REST call /api/v1/content (#20429)

Fixes

The 21.09 release includes fixes for the following reported issues.
For a list of issues addressed in dotCMS 21.09, please visit the dotCMS Github Repository.

Issue Conditions Github Link
Duplicates of the same language were allowed to be created. A language should not be able to be created if a language with the exact same values already exist. #7342
The search and replace utility was replacing characters with invalid ones on MS SQL Server in certain circumstances Only occurred when the characters being searched and replaced were non latin characters. #18209
Content search card view sometimes wrongly ran in background in certain circumstances Occurred when List view was requested. #19290
Theme selector sometimes failed to return to the home page in certain situations. Issue occurred when a user switches sites while on the theme selector. #19874
Sometimes the images and files were unable to be accessed in the task details page on the task portlet. Occurred when the task details were for a piece of content that was executing a workflow.. #20047
User with frontend permissions was sometimes seeing blank pages in certain situations. Only occurred the user also had backend permissions. #20452
User couldn't view or edit a piece of content when it has certain multilingual properties. Only occurred when that content referenced a non-default language on a page that didn't exist in the default language. #20494
Multiple UI bugs were seen. Bugs were on the content search screen, and the site browser. #20566
Generating a resource link for file assets in certain circumstances failed. Only occurred when the file asset had a legacy identifier. #20597
Reordering navigation items did not always work as expected. The UI was not allowing multiple tasks related to reordering occur. #20616
The add content button was sometimes showing up twice when adding or moving content in a specific container. Only occurred the dotCMS instance had legacy data. #20623
Update site was not correctly updating the aliases. This occurred when you Updated the site via the REST call. #20638
In certain situations when running containerized dotCMS initialization was getting stuck. Only occurred when new nodes were coming up and Tika was trying to initialize. #20640
Settings were sometimes not respected when an image was inserted into the WYSIWYG. Only occurred when WYSIWYG_IMAGE_URL_PATTERN was set on the image. #20642
Widgets index policy on a page was sometimes overridden by the default. Only occurred when an index policy was set in a code snippet widget on the page. #20649
Error was created when certain response header rules were set. Only occurred when the header required single quotes. #20659
Users were not allowed to push publish in another time zone in certain situations. Occurred when the user was trying to push publish in another timezone at a time that has already past in there current timezone. #20674
Users were able to login as all users in certain situations. Occurred when a user did not have login as permissions but were still able to use it. #20677
Vanity URLs could be created without required data. The vanity URL could be created without the title and the forward to field filled in. #20685
Site name was not able to updated a specific way. Issue occurred when trying to update a site name via the Update Site REST call. #20688
dotCDN was not invalidating the correct information on prod ion certain situations. Issue occurred when push publishing data that had been invalidated on auth. #20690
Errors were occurring after a ES reindex under certain circumstances. Issue occurred when the host inode was changed in the database. #20722
Error occurred when upgrading to 21.06 with a specific dotCMS setup. Issue occurred when a managed database was being used. #20725
Content Export Tool was able to export certain contentlets. Issue occurred when the contentlets to be exported didn't have CMS Anonymous access. #20746
Sensitive information was showing in the System Info tab of the dotCMS Maintenance page. Issue occurred system or environmental variables were set for sensitive information. #20757
Reordering items in page menu did not always work as expected. The UI was not allowing multiple tasks related to reordering occur. #20868
Duplicate data was shown in the System Info tab of the dotCMS Maintenance page. Occurs because the old data is never cleared instead the table keeps being appended with the same data. #20757
ReindexThread was filling up the log in certain circumstances. Occurred on 5.2.8.5 #20821
OutOfMemoryError occurred when the user tried to import a Bundle Occurred when many events were triggered at the same time. #20799
Errors were thrown when someone pushed a user. Only occurred when a user pushed multiple users without explicitly adding them to a bundle. #20805
Hanginging on the front end was sometimes experienced. The error only occurred when a user was creating multiple independent SCSS files that were compiled separately using a build in compiler. #18301

On this page