- Sulu 3.0: CMS with New Content Storage and Clearer Architecture
- From PHPCR to Doctrine ORM
- Better Performance and Simplifications
- Elasticsearch No Longer Mandatory for Articles
- Migration and Support
- Further Roadmap
Sulu 3.0 has been released. With this release, the open-source content management system (CMS) is undergoing a major technical restructuring, according to a blog post. Instead of the previously used PHPCR repository, the project will now rely entirely on Doctrine ORM and JSON fi…
- Sulu 3.0: CMS with New Content Storage and Clearer Architecture
- From PHPCR to Doctrine ORM
- Better Performance and Simplifications
- Elasticsearch No Longer Mandatory for Articles
- Migration and Support
- Further Roadmap
Sulu 3.0 has been released. With this release, the open-source content management system (CMS) is undergoing a major technical restructuring, according to a blog post. Instead of the previously used PHPCR repository, the project will now rely entirely on Doctrine ORM and JSON fields – a decision that is intended not only to boost performance but also to lower the entry barrier for Symfony developers. According to the team, around 150,000 lines of code were added, and more than 265,000 were removed.
The open-source CMS Sulu is based on the PHP framework Symfony and serves as a headless or classic CMS for complex, multilingual web projects. It is primarily aimed at developers who want to implement flexible content models using familiar Symfony tools. Versions 7.4 and 8.0 of Symfony were recently released here.
From PHPCR to Doctrine ORM
By moving away from memory-intensive PHPCR, Sulu introduces a new model for storing content: pages, articles, or snippets are now managed as regular Doctrine entities with JSON columns. This allows developers to directly access familiar tools and SQL queries instead of having to learn their own query language.
The system uses so-called dimensions to map language, publication, and version states. This allows fields that cannot be translated to be reused in multiple language variants – an approach that replaces the previous, more deeply nested structure and appears to be easier to debug.
Better Performance and Simplifications
According to the team, the new storage approach brings noticeable performance gains. Content structures can now be traced directly in the database, while configuration data continues to reside as XML in the repository.
The update of the PHP library Flysystem to version 3 is also intended to simplify the handling of media files. These can now be stored on different backends via a uniform interface, such as Amazon S3, Microsoft Azure, WebDAV, or Dropbox.
Elasticsearch No Longer Mandatory for Articles
In addition to the storage architecture, the article bundle has been rewritten. It can now be operated without the search engine and analytics tool Elasticsearch, which should save smaller projects the installation of a separate search service. For large installations, the option remains available through an add-on bundle that reintegrates Elasticsearch.
Also new is SEAL, the Search Engine Abstraction Layer. It bundles connections to search systems such as Loupe, Meilisearch, Solr, or Elasticsearch behind a common API. Loupe is used by default – an SQLite-based, PHP-internal solution that works fast enough for medium data volumes.
Migration and Support
Sulu provides its own tool for converting existing PHPCR data. The Migration Bundle transfers pages, articles, snippets, and URLs to the new storage structure and logs in detail where rework may be necessary.
Those who do not wish to carry out the conversion alone can, according to the development team, rely on community help via Slack and GitHub or on professional support. Further information on help and the release can be found in the blog post.
Further Roadmap
With version 3.0, maintenance for Sulu 1.6 ends, while Sulu 2.6 remains as an LTS (Long-term Support) version. The new architecture is intended to facilitate future functions and make the CMS more maintainable in the long term. More details about the release and the CMS are also available on GitHub.
(mdo)
Don’t miss any news – follow us on Facebook, LinkedIn or Mastodon.
This article was originally published in German. It was translated with technical assistance and editorially reviewed before publication.