De prijs van een Drupal-migratie hangt maar beperkt af van hoeveel pagina's u heeft. Hij hangt vooral af van hoeveel verschillende soorten content u heeft, hoeveel contrib-modules geen opvolger hebben in de doelversie, en hoeveel maatwerkcode er in de loop der jaren is bijgeschreven. Twee sites met evenveel nodes kunnen daardoor sterk verschillen in prijs. Hieronder staat waar dat verschil vandaan komt, welke posten vaak uit offertes wegvallen, en hoe u de omvang zelf telt.
Eerst: welke migratie heeft u eigenlijk voor de boeg?
Er zijn twee fundamenteel verschillende trajecten die allebei "Drupal-migratie" heten. Ze verschillen aanzienlijk in omvang.
Drupal 7 naar 10 of 11 is een herbouw. Drupal 8 verving in 2015 de volledige architectuur: hooks maakten plaats voor services en plugins, PHPTemplate voor Twig, en configuratie verhuisde naar YAML. Uw contenttypes, views, thema en modules gaan niet één-op-één mee; ze worden opnieuw opgebouwd, waarna alleen de data via de Migrate API wordt overgezet. Dat is nieuwbouw met datamigratie, geen upgrade.
Drupal 10 naar 11 is een upgrade binnen dezelfde architectuur. De site blijft staan, de code wordt bijgewerkt via Composer, deprecaties worden weggewerkt en enkele uit core verwijderde modules worden opgevangen. Dat is een wezenlijk kleiner traject.
| Versie | Status | Datum |
|---|---|---|
| Drupal 7 | End of life | 5 januari 2025 |
| Drupal 9 | End of life | 1 november 2023 |
| Drupal 10 | Uitgebracht | 15 december 2022 |
| Drupal 10 | End of life | 9 december 2026 |
| Drupal 11 | Uitgebracht | 2 augustus 2024 |
| Drupal 12 | Verwacht | week van 7 december 2026 |
Bron: het officiële release-schema op drupal.org. Let op de laatste twee regels: Drupal 10 gaat uit ondersteuning in dezelfde week dat Drupal 12 uitkomt. Rekent u met "eind 2026", reken dan met 9 december: dat is de dag waarop de beveiligingsupdates stoppen.
De vijf posten die de prijs bepalen
1. Het aantal contenttypes en velden
Dit is bij een Drupal 7-traject een van de grootste kostendrijvers. Elk contenttype moet opnieuw worden gemodelleerd, elk veld krijgt een mapping, elke mapping wordt getest. Een site met 6 contenttypes en 40 velden is een ander project dan een site met 28 contenttypes en 300 velden — ook als beide evenveel nodes bevatten.
De uitzondering zijn velden waarvoor geen equivalent bestaat: een veldtype uit een module die nooit naar Drupal 8 of hoger is geport, of een veldtype dat zonder migratiepad is meegeleverd. Die vergen een handgeschreven migratieplugin per stuk.
2. Contrib-modules zonder opvolger
Voor elke module op uw Drupal 7-site geldt één van vier scenario's, met oplopende kosten:
- Zit inmiddels in core (Views, Entity Reference, Date) — kosteloos.
- Bestaat als moderne versie met migratiepad — laag.
- Bestaat als moderne versie, maar met een andere datastructuur — u betaalt de hermodellering.
- Bestaat niet meer — u kiest: functionaliteit schrappen, alternatief inrichten, of zelf bouwen.
Categorie 4 is waar offertes ontsporen. Inventariseer die categorie vóór u prijzen opvraagt.
Bij Drupal 10 → 11 speelt hetzelfde in het klein. Uit core verwijderd in Drupal 11 zijn Actions UI, Activity Tracker, Book, Forum, Statistics en Tour. Gebruikt u er een, dan installeert u vóór de upgrade de contrib-versie, of u schrapt de functionaliteit. Daarnaast zijn Help Topics en Single Directory Components (SDC) obsolete geworden: hun functionaliteit is in core opgenomen — Help Topics ging met Drupal 10.2.0 op in de Help-module, SDC verhuisde vóór Drupal 10.3.0 naar core zelf.
3. Maatwerkcode
Bij Drupal 7 naar 10 of 11: hook-based code wordt herschreven naar services, plugins en event subscribers. Reken op herschrijven, niet op omzetten.
Bij Drupal 10 naar 11 is een deel te automatiseren. De module Upgrade Status controleert of uw site aan de systeemeisen van de volgende major voldoet en draait phpstan-analyses op uw maatwerk om openstaande deprecaties te vinden; waar een issue automatisch te herstellen is, verwijst hij naar Drupal Rector. Wat na Rector overblijft is het echte handwerk — en dat is het deel dat uw offerte bepaalt.
4. Het thema en de frontend
Bij een Drupal 7-traject wordt de frontend hoe dan ook opnieuw gebouwd. De vraag is alleen: het oude ontwerp exact reproduceren, of meteen een nieuw ontwerp? Reproduceren valt vaak tegen, omdat u jaren aan ad-hoc CSS-uitzonderingen precies moet nabouwen.
5. Integraties en koppelingen
Elke koppeling naar een extern systeem — CRM, ERP, betaalprovider, single sign-on, zoekmachine, marketing automation — is een eigen deelproject met een eigen testcyclus. Dit is ook de post die het gemakkelijkst buiten de inventarisatie valt, omdat niemand hem uit zichzelf noemt.
De kosten die zelden in de offerte staan
| Post | Wat de omvang bepaalt | Waarom hij wordt vergeten |
|---|---|---|
| URL-structuur en redirects | Aantal unieke oude paden, aliassen, taalvarianten | Wordt als "SEO-dingetje" afgedaan; raakt bij verkeerde uitvoering direct uw organische verkeer |
| Bestanden en media | Aantal bestanden, en of D7-file-velden naar media-entiteiten gaan | De databasemigratie lukt, de bestanden blijven achter |
| Meertaligheid | Aantal talen; D7-vertalingen gaan naar een ander model in core | Wordt geschat alsof het "×2 content" is; het is een ander datamodel |
| Gebruikers en rechten | Aantal rollen en permissies, niet aantal gebruikers | Rollen worden overgezet, permissies handmatig nagelopen |
| Views en overzichtspagina's | Aantal views, displays, filters, contextuele filters | Wordt gerekend als één post, is vaak een reeks |
| Redactietraining | Aantal redacteuren en de mate van interfaceverandering | De site werkt, maar de redactie nog niet |
| Dubbel beheer tijdens de bouw | Doorlooptijd × publicatiefrequentie | Oude site blijft live en groeit door; delta's moeten later alsnog mee |
| Hosting, PHP en database | Zie de eisen hieronder | Hostingpartij ondersteunt de vereiste versies nog niet |
| Stabilisatie na livegang | Complexiteit van het geheel | Er wordt begroot tot livegang, niet tot rust |
De laatste twee verdienen toelichting.
Platformeisen. Drupal 11 vereist PHP 8.3.0 of hoger. Aan databasezijde: MySQL 8.0+, MariaDB 10.6+, PostgreSQL 16+ of SQLite 3.45+. Bij PostgreSQL moet de extensie pg_trgm zijn aangezet — CREATE EXTENSION pg_trgm; uitgevoerd op de Drupal-database zelf, niet op een andere database op dezelfde server. Voor een upgrade naar Drupal 11 geldt bovendien dat uw site eerst op Drupal 10.3.0 of hoger moet draaien. Staat u op 10.1, dan is dat een extra stap vóór het eigenlijke werk begint. Controleer dit bij uw hostingpartij voordat u een offerte tekent, niet erna.
Dubbel beheer. Bij een traject van enkele maanden publiceert uw redactie ondertussen door. Of u bevriest de content — organisatorisch lastig — of u draait een tweede, kortere migratieronde vlak voor livegang, en dat is technisch werk dat begroot moet worden. In de praktijk zijn dat de twee opties.
Hoe u de omvang zelf inschat
U hoeft geen ontwikkelaar te zijn om te weten waar u ongeveer naar kijkt. Tel op uw huidige Drupal 7-site:
- Contenttypes —
/admin/structure/types - Velden totaal —
/admin/reports/fieldsgeeft de volledige lijst in één scherm - Views —
/admin/structure/views, en tel de displays, niet de views - Ingeschakelde modules —
/admin/modules, gesplitst in core / contrib / custom - Custom modules — alles in
sites/all/modules/custom - Talen —
/admin/config/regional/language - Bestanden — het aantal rijen in de tabel
file_managed, of/admin/content/fileals u de module File Entity gebruikt
Met Drush: drush pm-list --status=enabled --type=module voor de modulelijst.
Vergelijk vervolgens uw contrib-lijst met drupal.org: heeft elke module een release voor Drupal 10 of 11? De Drupal 7-versie van Upgrade Status doet precies dit — hij loopt uw geïnstalleerde projecten langs en toont per project de beschikbaarheid voor Drupal 8, 9, 10, 11 of 12, met een notitie over het upgraden en een downloadlink. Draai hem, en u heeft de categorie 4-lijst uit paragraaf 2 zwart-op-wit.
De vuistregel daarna: het aantal velden en het aantal view-displays voorspelt de prijs beter dan het aantal nodes. Krijgt u een prijs nadat alleen is gevraagd hoeveel pagina's u heeft, dan is dat geen schatting maar een gok.
Wat het gereedschap wel en niet voor u doet
Drupal core levert de modules migrate, migrate_drupal en migrate_drupal_ui. Daarmee draait u vanuit de browser een migratie van een Drupal 7-database naar een verse installatie. Dat werkt voor core-content: nodes, gebruikers, taxonomie, bestanden en standaard veldtypen.
Wat het niet doet: uw views, uw thema, uw maatwerk, en veldtypen uit modules die geen migratiepad hebben meegeleverd. Voor gecontroleerde trajecten gebruikt u daarom aanvullend migrate_upgrade — dat levert een drush-commando met de optie --configure-only, waarmee eerst migratieconfiguraties worden gegenereerd die u kunt aanpassen voordat er iets draait — plus migrate_plus en migrate_tools voor het draaien, hervatten en terugdraaien van individuele migraties. migrate_tools 6.x werkt met Drupal 9.1 en hoger, inclusief 10 en 11.
De conclusie die telt: de gereedschapskist neemt het voorspelbare deel voor zijn rekening. Uw offerte gaat over de rest.
Wat een realistische prijsvraag oplevert
Een bedrag noemen zonder de inventarisatie uit de vorige paragrafen is een slag in de lucht — juist omdat de spreiding tussen twee even grote sites zo groot is. Een Drupal 10 → 11-upgrade ligt structureel lager dan een Drupal 7-traject, omdat de architectuur gelijk blijft en het werk zich beperkt tot Composer-updates, de uit core verwijderde modules en deprecaties in maatwerkcode.
De verantwoorde volgende stap is daarom niet "een offerte opvragen" maar eerst laten inventariseren: welk upgradepad, welke modules zonder opvolger, welke risico's, en welke posten uit de tabel hierboven op u van toepassing zijn. Bij ons is dat de Drupal Migratiescan: € 1.250,- ex btw, binnen vijf werkdagen een migratieplan en een vaste prijs. Gaat u met ons door, dan verrekenen we de scan. Daarna volgt een offerte die op tellingen rust in plaats van op aannames.
Meer over het traject zelf staat op Drupal 7-migratie. Staat u op Drupal 10 en wilt u weten wat 9 december 2026 concreet voor u betekent, lees dan Drupal 10 end of life.
Veelgestelde vragen
Wat kost een Drupal-migratie gemiddeld?
Een gemiddelde is misleidend, omdat de spreiding groter is dan het gemiddelde zelf. Wat u werkelijk betaalt, wordt bepaald door het aantal velden, het aantal view-displays, het aantal contrib-modules zonder opvolger en de hoeveelheid maatwerkcode — niet door het aantal pagina's. Een upgrade van Drupal 10 naar 11 ligt structureel lager dan een Drupal 7-traject, omdat de architectuur gelijk blijft. Een bedrag dat hout snijdt volgt pas na een inventarisatie.
Waarom is Drupal 7 naar 11 zoveel bewerkelijker dan Drupal 10 naar 11?
Omdat het geen upgrade is maar een herbouw. Drupal 8 verving in 2015 de architectuur volledig: hooks werden services en plugins, PHPTemplate werd Twig, de configuratie verhuisde naar YAML. Uw contenttypes, views, thema en maatwerkmodules gaan daardoor niet één-op-één mee; die worden opnieuw gebouwd, waarna de content via de Migrate API wordt overgezet. Van Drupal 10 naar 11 blijft de site staan: u werkt deprecaties weg, u zorgt dat u minimaal op 10.3.0 en PHP 8.3 zit, en u vangt de zes uit core verwijderde modules op.
Kan ik met de standaardmodules van Drupal zelf migreren en zo kosten besparen?
Voor een eenvoudige site met vooral core-content is dat realistisch. migrate, migrate_drupal en migrate_drupal_ui zitten in core en zetten nodes, gebruikers, taxonomie en bestanden over. Zodra er contrib-veldtypen, meertaligheid, veel views of maatwerkmodules in het spel zijn, loopt u vast op precies de punten die de UI niet afdekt — en dan bent u alsnog aangewezen op handgeschreven migratieplugins. Draai in dat geval eerst Upgrade Status, zodat u weet welke modules geen opvolger hebben voordat u begint.
Wanneer moet ik in actie komen als ik op Drupal 10 zit?
Drupal 10 bereikt end of life op 9 december 2026 — dezelfde week waarin Drupal 12 wordt uitgebracht. Na die datum verschijnen er geen nieuwe Drupal 10-releases meer, inclusief beveiligingsreleases. Het werk dat vooraf gaat — naar minimaal 10.3.0, naar PHP 8.3, contrib-modules bijwerken, deprecaties opruimen — bepaalt hoeveel tijd u nodig heeft. Dat inventariseert u nu: tot 9 december is er weinig speling meer.