Danmarks Læreforening (DLF)
Making the switch from Umbraco 6 to Umbraco 10 - Modernizing and a new look

Preface
Building a new web platform utilizing Umbraco Block List Components.
Improving editorial and end user experience with modern design and system architecture.
Building and managing a large 70+ multi-site platform in Umbraco with IIS.
Backstory
This was one of the first projects I got to work on back when I was an intern during my 10 week mandatory internship in school.
The project was dated at the time, had huge technical debt and was, to put it lightly, hard to setup and develop for.
It was built using Umbraco 6, which meant component, blocks etc. was not a thing.
The Rich Text Editor(RTE) was THE feature along with some fields and custom code.
Fronted for the project was built using Gulp, Bower and Less. Yikes...
Modern at the time it was built, yes. Modern for a new student using the latest tech, nope.
The code even had a "Foreach of DOOOOOOOOOM", which to this day still haunts me in my sleep.

Redesign 2020
In 2020 we luckily got the approval for a quick n' dirty redesign.
The old backend and systems were not to be changed.
Instead we opted to overwrite all the design in the most "!important" way 😉
It worked great and was super fast to implement since no change to the main HTML etc. was really necessary.
We made the drop in design and a few optimizations and accessibility improvements.
The menu got a real overhaul since it did not perform and was not usable with the new design.
We implement the menu using dynamic loading menu items as you navigated.
Building the menu on the fly as the user would navigate through.
Preloading lower level and resolving the ancestor tree to open the menu at the exact location a visitor was.
This worked great and vastly improved performance and usability of the platform.
Still, left unhappy with the technical debt, we continued to push for a completely new, modern, platform.

2023 - New platform
We got approval and started the process for building a new platform targeting the latest Umbraco 13 LTS.
With all the prior knowledge and skill we acquired from building dsr.dk, we set out to build the platform without repeating the same mistakes.
The process was progressing smoothly, we had the templates for a awesome Docker setup for local development.
Developing locally could even be done with the new Apple Silicon based MacBooks making many frontenders very happy!
One of the unique cases we had to account for was building a platform that could work reliably with 70+ sites.
This meant we had to carefully architect the backend while still allowing some flexibility for the editors.
Example of the Umbraco Content Tree:
Website Container/
├─ Shared Content/
│ ├─ Contacts
├─ dlf.org/
│ ├─ Content Nodes
├─ kreds123.dlf.org/
│ ├─ Content Nodes
...
This structure allowed us to scope permission while also sharing some generic content.
The decision was also made that all local departments would be consolidated under the "dlf.org" domain as sub-domains.
With this approach certificate management was not a lot easier as well as managing DNS changes for the DLF IT department.
Previously we would manage all the certificates for DLF using Let's Encrypt with Win Acme for automated renewals.
It worked awesomely and was super stable, but managing new certs and changes was a chore.
Content migration
No...
It was deemed not feasible with the allotted budget since all content was wrapped inside the RTE.
This meant we had no easy way for content extraction and transformation to block content etc.
Therefore the client planned a manual curated content migration to move important content by hand.
Conclusion
Using all prior knowledge we manage to build a beautiful, mobile first, super snappy and modern platform.
We accomplished this within budget and with a happy client, happy editors and happy developers.
Everyone wins! 🙌
Not everything was a breeze but that is just how development is and every issue is just a opportunity to learn and build better platforms.
I am overall very happy and proud of this project, even though I can't take any credit for the frontend part.