Case Study: From Legacy eZ Publish to Modern Ibexa OSS
Complex content portal migration with custom workflow development
The Situation
A European SME had been running a content-rich B2B portal on eZ Publish for over a decade. The site served as a core business asset, a structured content platform with complex editorial workflows, multi-language support, and deeply customized functionality built over years of development.
The original developer had left. The site was running on an outdated PHP version, forcing an equally outdated server operating system. When the client moved to a new hosting provider, the infrastructure limitations became impossible to ignore: security vulnerabilities, compatibility issues, and no viable path forward on the legacy stack.
The client needed to migrate but couldn't afford to lose the editorial workflows and content structures their team depended on daily.
The Challenge
This was not a simple upgrade. The migration presented several significant technical challenges:
Legacy content and data complexity
- Years of structured content with custom content types
- Rich text content stored in the legacy ezxmltext format, including custom tags
- Custom database tables integrated with the eZ Publish content model
- Multi-language content requiring careful migration of translations
Editor customizations to preserve
- Custom editorial features including footnotes and marginal numbering (sidenumbers) for precise content referencing
- Toolbar configurations specific to different content types
- Workflows for pasting and converting content from Microsoft Office and LibreOffice
Missing platform features
- Ibexa OSS lacks the content approval workflow that the editorial team relied on
- The client needed role-based field-level editing permissions — controlling which users could edit which fields on specific content types
- Version comparison tools were required for editorial review
SEO and URL structure
- The existing site had deep content hierarchies resulting in long URLs
- All existing URLs needed to redirect properly to preserve search engine rankings
- Structured data markup was needed for modern SEO requirements
Our Approach
We recommended Ibexa OSS as the migration target. It's the natural successor to eZ Publish, sharing the same content model foundations, which significantly reduces migration risk compared to rebuilding on an unrelated platform.
However, we made clear from the start: this would be migration plus custom development to fill the gaps.
Database and Content Migration
We built migration scripts to:
- Convert eZ Publish database tables to the corresponding Ibexa structure
- Transform all ezxmltext content to Ibexa's richtext format
- Clean up years of accumulated content issues: invalid anchors, broken links, malformed XML structures, empty tags
- Migrate custom database tables
- Convert translation files from eZ Publish format (.ts) to Symfony format (.xlf)
- Transform image aliases to Ibexa image variations
Custom CKEditor5 Plugin Development
The legacy site had specialized editorial features that don't exist in standard Ibexa. We developed custom CKEditor5 plugins:
Footnotes Plugin
- Insert and edit footnotes directly in the rich text editor
- Automatically convert footnotes pasted from Word or LibreOffice documents
- Custom tag generation compatible with Ibexa's richtext storage
Sidenumbers Plugin
- Add alphanumeric reference markers to paragraphs and headings (1, 2, 2a, 2b, 3...)
- Auto-suggest next sidenumber based on existing sequence
- Automatic reindexing when sidenumbers are added, edited, or removed
- Anchor link generation for direct content referencing
Content Approval Workflow (Custom Built)
Ibexa OSS does not include content approval workflows. The client's editorial process required it, so we built it:
- Approval queue with pending, approved, and denied version tracking
- Modified Ibexa's publishing flow to intercept content that requires approval
- Approval interface with commenting capability
- Version diff view showing exactly what changed between versions
- Automatic handling of superseded drafts
Admin UI Customizations
We extended the Ibexa admin interface extensively:
- Role-based field visibility: editors see only the fields they're permitted to edit
- Custom dashboard showing approval queue and collaboration items
- Bulk content operations
- Custom search interface with preset filters
- Version comparison tool for any two versions in any language
URL Structure and SEO
- Developed custom URL alias generation to create shorter, SEO-friendly URLs for deeply nested content
- Implemented 301 redirects from all legacy URLs using URL wildcards
- Added structured data markup (JSON-LD) for article content
- Configured Solr search engine integration
Frontend Rebuild
- Multi-language site access configuration
- Responsive layout
- Navigation, breadcrumbs, language switcher
- Content tree rendering
- Interactive tools with PDF export capability
The Results
Modern, supported stack
- Current PHP version on modern server infrastructure
- Security concerns resolved
- Platform with active development and long-term viability
Workflows preserved & improved
- Approval workflow now has better visibility and version comparison
- Custom editor plugins work seamlessly in the new CKEditor5 environment
- Role-based permissions are more granular than before
Zero content loss
- All structured content migrated successfully
- Rich text formatting preserved, including custom elements
- Multi-language content intact
SEO continuity
- All legacy URLs redirect correctly
- Shorter, cleaner URL structure for new content
- Structured data markup for better search engine understanding
Technical Summary
| Area | What We Delivered |
|---|---|
| Database migration | Full schema conversion, content transformation, custom tables |
| Rich text migration | ezxmltext to richtext, custom tag conversion, data cleanup |
| CKEditor5 plugins | Footnotes, Sidenumbers (custom development) |
| Approval workflow | Complete implementation (not available in Ibexa OSS) |
| Admin customizations | Role-based UI, version diffs, custom dashboards, bulk operations |
| Permissions | Custom policy limitations for field-level, relation-based access |
| URL/SEO | Custom aliases, 301 redirects, structured data, Solr configuration |
| Frontend | Multi-language, responsive, content tree, interactive tools |
| DevOps | Import/export scripts, sitemap generation, draft cleanup automation |
Why This Project Matters
Many eZ Publish migrations are straightforward: move the content, rebuild the templates, done. This project required going much deeper — building platform features that don't exist in Ibexa OSS, preserving complex editorial workflows, and handling a decade of accumulated content.
We were able to do this because we understand both platforms deeply. We've worked with eZ Publish since 2007 and hold certification since 2013. This project demonstrated that migration to Ibexa OSS can work even for heavily customized installations — if you have the expertise to fill the gaps.
Considering a migration from eZ Publish?
We can help you assess your situation and execute a successful migration to Ibexa OSS — preserving your workflows, content, and business continuity.
Request Migration AssessmentLearn more: Our migration service | Technical lessons learned