Why Now Is the Right Time to Migrate from django CMS 3.11
Support for django CMS 3.11 ends in April. For teams still running it in production, this isn’t just a theoretical deadline — it’s a security, compatibility, and maintenance risk.
django CMS 3.11 Long-Term Support (LTS) ends in April 2026. So does Django 4.2 LTS. This means both Django 4.2 and django CMS 3.11 will not receive security updates any more and you might start collecting tech debt.
The good news? The migration path forward is clearer, safer, and more mature than it has ever been.
With the community completing many real-world migrations of long-running production projects from django CMS 3.11 to CMS 4 (and CMS 5), here’s what you should know — and why delaying further will only make the transition harder.
The Reality of Staying on django CMS 3.11
| Once support ends: | In contrast, django CMS 4 or 5: |
| No security fixes | Actively maintained (5.0 is LTS) |
| No compatibility guarantees with modern Django (e.g., 5.2) | Support modern Django versions |
| Increasing breakage with third-party packages | Introduce architectural improvements |
| Growing onboarding cost for new developers | Foundation for all future CMS development |
The Biggest Lesson: The CMS Isn’t the Problem — Legacy Data Is
One of the most important takeaways from a real migration:
Most migration issues are not caused by django CMS 4 itself.
They are caused by years of accumulated custom code and inconsistent CMS data.
Common pain points uncovered during migration:
-
Orphaned plugins
-
Corrupted page trees
-
Custom code relying on specific django CMS 3 design choices
-
CMS 3–specific template assumptions
These problems already exist in many CMS 3 projects — the CMS 4 migration simply exposes them. Once cleaned up, the migration becomes dramatically smoother.
django CMS 4: A Necessary (and Healthy) Architectural Shift
django CMS 4 introduces meaningful internal changes:
- Pages and page content (formerly roughly a "title" object) are now clearly separated
- Versioning now is optional — it’s no longer core
- Edit and previews are handled differently by admin endpoints
- Language handling is more intentional and explicit
Trying to replicate CMS 3 behaviour exactly will cause friction. Embracing the new model reduces it. Once teams adjusted expectations, CMS 4 proved to be stable, predictable, and powerful.
Why You Should Plan for CMS 5 — Not Stop at CMS 4
Here’s the best part:
Once you are on django CMS 4, upgrading to CMS 5 is usually trivial.
In most cases, CMS 5 migration involves:
-
Updating packages to their latest versions
-
Running migrations
-
Removing temporary workarounds used for CMS 4 compatibility
No large conceptual jump. No migration tooling. No data model shock.
CMS 4 is the hard step. CMS 5 is the reward.
Migration Checklist: django CMS 3.11 → 4 (→ 5)
1. Preparation (Do Not Skip This)
-
Back up your database
-
Clone production data to a local or staging environment
-
Upgrade Django first (e.g. to Django 4.2)
-
Move from djangocms-text-ckeditor to djangocms-text (if you have not done yet). Configure djangocms-text to use the CKEditor4 if you want to avoid user-facing changes.
-
Ensure your project runs cleanly before touching CMS
2. Clean Your CMS Data Before Migrating
This step prevents duplicated pages and broken trees.
-
Run CMS integrity checks
-
Fix the CMS page tree
-
Remove orphaned plugins
-
Verify admin and page rendering still works
-
Revert to this clean DB state before migrating
3. Install Required CMS 4 Packages
-
Read the how-tos: djangocms-4-migration and these blog posts
-
Install django CMS 4 (preferably 4.1.9 or later)
-
Install migration helpers
-
Install required companion packages:
-
djngocms-versioning 2.1
-
djangocms-alias 2.0
-
-
Move to djangocms-stories if you have been using djangocms-blog with django CMS 3.11
-
Add them to
INSTALLED_APPSin the correct order
4. Run Migrations
-
Run Django migrations
-
Verify CMS tables migrate correctly
-
Confirm pages still exist in the database
Schema changes are expected — this is normal.
5. Update Custom Code and Templates
Expect to update:
-
Direct title object access
-
Models that use the placeholder field
-
Old admin URL reversals
-
page or title extensions
-
CMS 3–specific template tags
-
Custom language preview implementations
Most fixes are straightforward once identified.
6. Validate Versions Carefully
Use known compatible versions:
-
django CMS 4.1.9+
-
Compatible versioning package
-
Django 4.2+
Avoid mixing early CMS 4 releases with the newest plugins unless verified.
7. Verify Page Rendering Thoroughly
-
Test homepage and simple pages
-
Test deeply nested pages
-
Test pages with heavy plugin usage
-
Verify CMS admin tree behaviour
8. Continue to django CMS 5
Some CMS 4 plugin features (e.g. certain alias behaviours) were fixed in CMS 5. Also, it's a lot faster, again.
The Bottom Line
-
django CMS 3.11 support ends in April — waiting increases risk
-
CMS 4 migration work mostly involves clean-up and modernization
-
Once on CMS 4, CMS 5 is a small step
-
The CMS ecosystem is healthier, clearer, and more maintainable going forward
If your site has been running for years, migration isn’t just about compatibility — it’s about finally paying down long-standing technical debt.
The best time to migrate was earlier. The second-best time is now.
Need help? Join the community on discord!
blog comments powered by Disqus