Sector(s)
Team Members
Project Team
- Susanne Fritsche (project management)
- Patrick Fey (lead developer, back end development)
- Carlos Stockhausen (front end development)
- Ruedische (back end development)
- Eye Drops (content migration)
- Johannes Stahl (additional project management)
- Jan Kellermann (technical infrastructure)
- René Freund (systems administration)
Visit the site
Visit the siteOrganizations Involved
Community contributions
- Various merge requests across the whole Search API stack, Symfony Mailer, Diff and other major contributed modules.
- Various contributions to core issues affecting the site.
- Ongoing upstreaming of features and bug fixes for Drupal core and various contributed projects.
Potsdam is the capital and largest city of the German state of Brandenburg, a city of UNESCO World Heritage, parks and palaces on the idyllic lakes of the Havel river, a city of culture, a center of film, education and science, characterized by a 1000-year-old history as a royal capital and state capital close to Berlin.
werk21 originally migrated the main web site of the city and several smaller satellite sites, e.g. for various museums, from a proprietary CMS to Drupal in 2013. Since then, a number of additional satellite sites have been launched on Drupal. With the impending end of security coverage and development of that major version of Drupal and the desire by the city of Potsdam to make use of the many new features provided by modern Drupal versions, the city of Potsdam decided to have those sites migrated to the latest Drupal version available at the beginning of the migration project. As a new major version of Drupal became available later during the project, the already migrated sites were upgraded to the latest major version of Drupal and the sites still to be migrated were then directly migrated into the updated Drupal code base utilizing Drupal's much easier upgrade path between major versions introduced recently, which didn't require a complete rewrite of the code and full-blown content migration to upgrade.
Main goals
The main goal was to keep (almost) all existing content and upgrade to a more modern layout and editorial platform, also improving multilingual support and accessibility on the way. Another main goal was to provide a cross-site search making it easier for citizens to find relevant content across the various different Drupal sites run by the city.
Back to topChallenges
Originally, the English content was hosted on a separate Drupal installation. To offer better editorial and visitor-facing integration between the various multilingual content, the content of the English site was migrated into the German site.
While the old Drupal site made extensive use of Panelizer and Openlayers, those module stacks were no longer available for the latest versions of Drupal. For the extensive mapping features used by the city, Leaflet was chosen as a replacement. Instead of Panels and Panelizer, the new sites use the Paragraphs stack to offer editors a solid and simple way to build more complex landing pages.
Back to topTimeline
To keep the whole project manageable both from a project management perspective and for the various editors of the sites and at the same time remain well within the budget limits of the city, the sites were migrated one by one over a time frame of approx. 1.5 years. Anticipating the imminent relaunch, ongoing maintenance and development of new features for the old site was reduced to a minimum well in advance, rather investing the available time into planning the migration to the new platform. We started with relatively small satellite sites for the various different districts of the city, which only used a sub-set of the features of the platform, then progressed to other larger satellite sites, e.g. for the museums or the public library, finishing with the main site. We started with the basic features and then continuously extended the code base and migration code with new features as we progressed.
The first site was launched on the then current major version of Drupal, but during development of the new platform, we continuously updated the code base from one new minor core version to the next and even upgraded to the latest, next major version of Drupal, which was released during the migration project. At the end of the project, all sites were running the latest core version available at the time.
Back to topSpecial features
The new sites feature a cross-site search using Search API Solr, which allows visitors to easily find content across all of the various Drupal sites.
Making use of a new digital experience platform (DXP), events from different sources are consolidated in one single place, allowing for central editorial management of the events displayed across the various different Drupal sites.
Leaflet is used to display selected geocoded content on maps, also featuring a Taxonomy-based category filter. Some examples include a map of all the different schools of Potsdam with ability to filter by type of school and a map of the
major sights for tourists in Potsdam. Additionally, the editors can easily build maps using custom KML layers provided by the city's geoinformation department, which offers the city endless mapping possibilities ranging from showing the
various city districts, showing election offices, or even evacuation zones in case of discovery of a bomb from World War 2 or in case of other major emergencies.
For geocoding, mapping, visitor analysis and similar services, the Drupal sites don't rely on third party integrations, thus protecting the personal data of site visitors, without any compromises on available features.
Back to topThe city of Potsdam initially decided to migrate from a proprietary CMS to an open sourcce CMS in 2013, mainly to reduce licensing and ongoing maintenance costs, helping to mitigate the city's strained budget situation at the time, while making more modern CMS features available to editors and citizens.
Among different open source CMSes, Drupal was specifically chosen for its proven security track record and well established security processes, the ability to be customized easily to match Potsdam's editorial requirements, many enterprise features required by a very large site of a major government body already available out of the box or through contributed modules, and comprehensive APIs to extend the site with additional custom features or provide integration with other software already in use at the city.
Over the years, Drupal delivered and in many situations even out-performed the original expectations. Notably, when the city's phone and computer network was hacked in 2022 and then again at the beginning of 2024, the city's web sites running on Drupal and a social media account run by the city were among the few IT services that didn't have to be shut down, but remained online the entire time during the attack, providing the city with the ability to keep its citizens informed about the progress of the attack and how to get access to vital services like social security during the outage of the network.
When the time came to decide whether to migrate to another CMS or upgrade to a more modern version of Drupal, naturally the city decided to stay with Drupal.
Technical Specifications
Drupal version:
Key modules/theme/distribution used:
The Search API stack was chosen to deliver a solid search experience for the vast amount of content provided by the various Drupal sites, also featuring a cross-site search. Migrate was the natural go-to stack to preserve all the content from the various legacy Drupal sites and provide some regular imports of content from third-party sources. Symfony Mailer was chosen as the new framework to deliver HTML emails due to the solid features, modern APIs, quick setup and configuration and due to its prospect of being included as default mail stack in future Drupal core versions. Paragraphs was chosen to provide a solid, simple and familiar editing experience to intuitively build landing pages. Klaro was chosen to manage cookies and third party integrations, offering a comprehensive feature set, providing everything necessary to ensuring compliance with local data protection laws, while working almost out of the box without a lot of configuration or needing complicated patches of third party code.