---
url: 'https://dxpr.com/nl/hc/documentatie/dxpr-builder-leren/aan-de-slag/migreren-van-1x-naar-3x'
title: 'Migreren van 1.x of 2.x naar 3.x | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2023-11-06T09:44:46+00:00'
updated: '2026-10-24T17:19:22+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: 'DXPR Builder 3.x werkt ter plekke bij vanaf elke 1.x- of 2.x-release. Composer wisselt de code, en drush updatedb draait de updatehooks in dxpr_builder.install die configuratie en inhoud omzetten. Deze pagina somt op wat die hooks doen, wat er wijzigde voor maatwerkcode, en hoe je het resultaat verifieert. Releasedata komen uit git-tags; zie Oudere releases.'
tags:
  - 'Move from another builder'
image: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
published: true
og:
  site_name: DXPR
  updated_time: '2026-10-24T17:19:22+0000'
  'image:alt': 'DXPR, powered by Drupal: AI-powered Drupal for marketers.'
schema:
  '@context': 'https://schema.org'
  '@graph':
    -
      mainEntity: {  }
    -
      '@type': TechArticle
      headline: 'Migreren van 1.x of 2.x naar 3.x'
      description: 'DXPR Builder 3.x werkt ter plekke bij vanaf elke 1.x- of 2.x-release. Composer wisselt de code, en drush updatedb draait de updatehooks in dxpr_builder.install die configuratie en inhoud omzetten. Deze pagina somt op wat die hooks doen, wat er wijzigde voor maatwerkcode, en hoe je het resultaat verifieert. Releasedata komen uit git-tags; zie Oudere releases.'
      image:
        '@type': ImageObject
        url: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
        width: '1200'
        height: '630'
      datePublished: '2023-11-06T09:44:46+0000'
      dateModified: '2026-10-24T17:19:22+0000'
      author:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
        url: 'https://dxpr.com/'
        logo:
          '@type': ImageObject
          url: 'https://dxpr.com/themes/custom/dxpr_com/dxpr-logo-dark.svg'
          width: '1348'
          height: '501'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
        url: 'https://dxpr.com/'
        logo:
          '@type': ImageObject
          url: 'https://dxpr.com/themes/custom/dxpr_com/dxpr-logo-dark.svg'
          width: '1348'
          height: '501'
      mainEntityOfPage: 'https://dxpr.com/nl/hc/documentatie/dxpr-builder-leren/aan-de-slag/migreren-van-1x-naar-3x'
      articleSection: 'Verhuizen vanaf een andere builder'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/nl/hc/documentatie/dxpr-builder-leren/aan-de-slag/migreren-van-1x-naar-3x'
      description: 'DXPR Builder 3.x werkt ter plekke bij vanaf elke 1.x- of 2.x-release. Composer wisselt de code, en drush updatedb draait de updatehooks in dxpr_builder.install die configuratie en inhoud omzetten. Deze pagina somt op wat die hooks doen, wat er wijzigde voor maatwerkcode, en hoe je het resultaat verifieert. Releasedata komen uit git-tags; zie Oudere releases.'
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: Home
            item: 'https://dxpr.com/nl'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: nl
---
[Helpcentrum](/nl/hc)/[Documentatie](/nl/hc/documentatie) /[DXPR Builder leren](/nl/hc/documentation/learn-dxpr-builder) /[Begin hier](/nl/hc/documentation/learn-dxpr-builder/start-here) /[Verhuizen vanaf een andere builder](/nl/hc/documentation/learn-dxpr-builder/migration) # Migreren van 1.x of 2.x naar 3.x.

 DXPR Builder lerenBegin hierVerhuizen vanaf een andere builder

   ## In deze gids

 Gerelateerde gidsen

- [DXPR Builder bijwerken](/nl/hc/documentatie/dxpr-builder-leren/aan-de-slag/bijwerken)
- [Wijzigingenlog](/nl/hc/documentatie/dxpr-builder-leren/aan-de-slag/wijzigingenlog)
- [Configuratiereferentie](/nl/hc/documentatie/dxpr-builder-leren/referentie/configuratiereferentie)

DXPR Builder 3.x werkt ter plekke bij vanaf elke 1.x- of 2.x-release. Composer wisselt de code, en `drush updatedb` draait de updatehooks in `dxpr_builder.install` die configuratie en inhoud omzetten. Deze pagina somt op wat die hooks doen, wat er wijzigde voor maatwerkcode, en hoe je het resultaat verifieert. Releasedata komen uit git-tags; zie [Oudere releases](/nl/hc/documentatie/dxpr-builder-leren/aan-de-slag/oudere-releases).

## Versiegeschiedenis in het kort

| Reeks | Drupal | Opmerkingen |
|---|---|---|
| 7.x-1.x | Drupal 7 | Verkocht als Glazed Builder, later hernoemd. |
| 1.x (8.x-1.x) | Drupal 8 en 9 | Machinenaam module `dxpr_builder` vanaf de eerste 1.x-release in mei 2020. Laatste release 1.8.8. |
| 2.x | Drupal 9.3 tot 11 | CKEditor 5, Key-moduleondersteuning, eerste AI-functies. Laatste release 2.8.1. |
| 3.x | Drupal 10.2 en 11 | Alleen Bootstrap 5, Key-module vereist, inhoudsmigraties, AI-pagina- en afbeeldingsgeneratie. |

De machinenaam wijzigde niet tussen 1.x en 3.x. Inhoud die nog markup uit het Glazed-tijdperk draagt moet op 1.x of 2.x worden gemigreerd vóór het upgraden; 3.x herschrijft de Glazed-naam niet meer (zie hieronder).

## Vereisten om te beginnen

- Drupal 10.2 of later, of Drupal 11 (`core_version_requirement` in `dxpr_builder.info.yml`).
- De Key-module. Hij is een harde afhankelijkheid in 3.x; `dxpr_builder_update_9020()` installeert hem als `drush updatedb` hem mist.
- Een productsleutel uitgegeven voor DXPR Builder 2.0.0 of later. Sleutels zonder `dxpr_tier`-claim worden geweigerd door het instellingenformulier.
- Een thema dat Bootstrap 5 levert, of de optie **Bootstrap 5** bijladen. Bootstrap 3- en 4-bijladen bestaat niet meer.

## Migratiestappen

1. Maak een backup van de database en bestanden:

    ```bash
    drush sql:dump --result-file=backup.sql

    ```
2. Werk de code bij met Composer. 3.x verschijnt momenteel als pre-releases, dus sta ze toe:

    ```bash
    composer require 'drupal/dxpr_builder:^3.0@beta' --with-all-dependencies

    ```
3. Draai de updatehooks en herbouw caches:

    ```bash
    drush updatedb
    drush cache:rebuild

    ```

    Verschillende 3.x-hooks verwerken elke DXPR Builder-veldwaarde in batches (zie hieronder). Op grote sites kosten ze minuten, geen seconden.
4. Open `/admin/dxpr_studio/dxpr_builder/settings` en controleer de sectie **Licentie**. Na update 9020 is de **Opslagmethode** **Key-module** en is de **Sleutel** `DXPR Builder JWT` (`dxpr_builder_jwt`).
5. Controleer **Bestanden van Bootstrap bijladen** op dezelfde pagina. Sites met Bootstrap 3 of 4 geselecteerd staan nu op **Bootstrap 5**.
6. Open `/admin/dxpr_studio/dxpr_builder/ai_settings` en beslis of de drie AI-schakelaars, die standaard aanstaan, aan moeten blijven.
7. Bezoek pagina's die DXPR Builder gebruiken en bevestig dat ze correct renderen en bewerken.

## Wat de updatehooks doen

Hooks genummerd 8005 tot 8025 verschenen in 1.x. Een 1.x-site draait alles vanaf 8026; een 2.8.0- of 2.8.1-site draait 8040 en 9014 en verder. De functienamen zijn `dxpr_builder_update_NNNN()`.

### Toegevoegd in 2.x (draait bij komst van 1.x)

| Hook | Wat hij doet |
|---|---|
| 8026 | Werkt de centrale DXPR Builder-gebruikersopslag bij. |
| 8027 | Voegt het licentie-infoblok en een kolom “DXPR Builder-gebruiker” toe aan de People-weergave. |
| 8028 | Maakt de tabel `dxpr_lock` voor inhoudsvergrendeling. |
| 8029 | Voegt het licentieblok toe aan het gebruikerslicentiedashboard. |
| 8030 | Schakelt de Bootstrap-instelling om nadat de optie “Bootstrap 3 Light” is verwijderd. |
| 8031 | Schakelt het licentie-infoblok in waar het uitgeschakeld was geïnstalleerd. |
| 8032 | Verwijdert geblokkeerde gebruikers uit de licentieopslag. |
| 8033 | Initialiseert `drm_last_contact`. |
| 8034 | Installeert het gebruikersveld `dxpr_user_is_disavowed` en de avow/disavow-gebruikersacties. |
| 8035 | Initialiseert de instelling `hide_reminders`. |
| 8036 | Migreert CKEditor 4-werkbalkknopnamen in profielen naar CKEditor 5. |
| 8037 | Voegt een standaard afbeeldingsstijl toe voor snel ladende afbeeldingen. |
| 8038 | Wist caches om de Key-module-integratieservices te registreren. |
| 8039 | Repareert afbeeldingsstijlen met onvolledige `image_scale_and_crop`-instellingen. |
| 9007 | Maakt de vocabulaires `ai_tone_of_voice` en `ai_agent_commands` met standaardtermen. |
| 9008 | Zet `ai_enabled` op true en verwijdert de oude sleutel `ai_page_enabled`. |
| 9009 | Verplaatst `drm_last_contact` van configuratie naar state. |
| 9010 | Wist caches. |
| 9011 | Schakelt de knoppen AI-assistent en AI Tone of Voice in in elk profiel. |
| 9012 | Herstelt `ai_page_enabled` met standaard true. |
| 9013 | Stelt de standaard AI-uitvoerfiltering in (`ai_output_allowed_domains`). |
| 9015 | Voegt `ai_image_enabled` toe met standaard true. |

### Toegevoegd in 3.x (draait bij komst van 1.x of 2.x)

| Hook | Wat hij doet |
|---|---|
| 8040 | Normaliseert `bootstrap` naar `bs5`; de waarden `1` (Bootstrap 3) en `bs4` worden herschreven. |
| 9014 | Batch: zet Owl Carousel-markup in inhoud om naar de Bootstrap-carrousel (`src/Migration/OwlCarouselMigration.php`). |
| 9016 | Voegt `ai_user_model_selection` toe met standaard true. |
| 9017 | Batch: zet circliful-cirkeltellers om naar Bootstrap-voortgangsmarkup (`CircleCounterMigration.php`). |
| 9018 | Batch: zet legacy-voortgangsbalkmarkup om naar de Bootstrap-voortgangsstructuur (`ProgressBarMigration.php`). |
| 9020 | Installeert de Key-module, verplaatst `json_web_token` naar de Key-entiteit `dxpr_builder_jwt`, zet `api_key_storage` op `key` en wist de waarde als platte tekst. |
| 9021 | Vult de eigenschap `type` van gebruikerssjablonen aan uit hun markup. |
| 9022 | Batch: voegt `data-entity-type` en `data-entity-uuid` toe aan interne `/node/N`-links (`EntityLinkMigration.php`). |
| 9023 | Batch: repareert tekstformaat, samenvatting en verwijderde delta's die update 9022 verloor op `text_with_summary`-velden. |
| 9024 | Batch: verrijkt interne links met alias op dezelfde manier als 9022 (`AliasLinkMigration.php`). |
| 9025 | Wist `tone_of_voice_vocabulary` als het naar een vocabulaire wijst dat niet meer bestaat. |
| 9026 | Wist een `json_web_token` als platte tekst achtergebleven in de instellingen als de sleutel in een Key-entiteit leeft. |

Er is geen update 9019.

### Inhoudsmigraties

3.x draait inhoudsmigraties alleen in batch; er is geen conversie tijdens renderen meer. De migratiestatuspagina (`/admin/dxpr_studio/dxpr_builder/migration-status`) en het statusrapport sommen openstaande inhoud op. De updatehooks hierboven migreren hem, en dat doen ook de acties **Nu uitvoeren** en **Alle openstaande migraties uitvoeren** op die pagina. Migraties zijn services met de tag `dxpr_builder.content_migration` (`dxpr_builder.services.yml`). Een batch die fouten vastlegt wordt niet als voltooid gemarkeerd; de mislukte items worden gelogd en blijven openstaan.

De `glazed_to_dxpr`-stringherschrijving die 1.x en 2.x tijdens renderen toepasten is verwijderd. De Glazed-naam is vervallen met 1.0.0 in mei 2020 en alle inhoud uit het Glazed- en Carbide-tijdperk wordt geacht door die releases te zijn gemigreerd. De herschrijving was een kale stringvervanging. Op sites waarvan de inhoud Glazed slechts noemt (supportartikelen, documentatielinks), zou hij proza hebben herschreven en links hebben gebroken in plaats van markup te migreren. Sites die nog Glazed-klassenamen in opgeslagen inhoud hebben moeten eerst de 2.x-release draaien.

## Wijzigingen voor maatwerkcode

### Veldformatter

De veldformatter-id is `dxpr_builder_text` (label “DXPR Builder”, `src/Plugin/Field/FieldFormatter/DxprBuilderFormatter.php`), ongewijzigd sinds 1.x. Hij heeft één instelling, `profile`, die leeg is voor de rolgebaseerde standaard of een profiel-id. Controleer of elk builderveld deze formatter nog gebruikt op zijn weergave; de reparatie van update 9023 is beperkt tot velden die dat doen.

### Hooks

`dxpr_builder.api.php` documenteert de 3.x-hooks. Hernoem de Glazed Builder-hooks als volgt:

| Glazed Builder-hook | DXPR Builder 3.x-hook |
|---|---|
| `hook_glazed_builder_classes()` | `hook_dxpr_builder_classes_alter(array &$dxpr_builder_classes)` |
| `hook_glazed_builder_buttons_folders()` | `hook_dxpr_builder_element_buttons_folders_alter(array &$dxpr_element_buttons_folders)` |
| `hook_glazed_builder_elements_folders()` | Verwijderd; geen vervangende hook. |
| none | `hook_dxpr_builder_icon_sets_alter(array &$icon_sets)`, nieuw. Pictogramsets worden gedeclareerd in `MODULE.dxpr_icon_sets.yml`-bestanden. |

### CSS en hulpklassen

Aangepaste CSS die Glazed-klassenamen target moet de DXPR-namen gebruiken, zoals `dxpr-theme-util`, `panel-dxpr` en `dxpr-builder`. Hulpklassen in de editor worden geleverd via `hook_dxpr_builder_classes_alter()`.

### Instellingen en implementatie

- Verwijder `json_web_token` uit gecommitte configuratie; na update 9020 leeft de sleutel in de `dxpr_builder_jwt`-Key-entiteit. Die Sleutel gebruikt de **Instellingen**-provider, dus de sleutel wordt nog steeds geëxporteerd als `key.key.dxpr_builder_jwt`. Schakel hem om naar de provider **Bestand** of **Omgeving** op `/admin/config/system/keys` om hem uit exports te houden.
- Instellingen-exports bevatten nu de twee AI-vocabulaires en hun termen.
- Profielen exporteren CKEditor 5-knopnamen in `inline_buttons` en `modal_buttons`.

## Problemen oplossen

Als inhoud na de update niet correct wordt weergegeven:

1. Draai `drush cache:rebuild`.
2. Controleer `/admin/reports/dblog` op berichten uit het `dxpr_builder`-kanaal; batchmigraties loggen de items die ze overslaan.
3. Bevestig dat de weergave van elk builderveld nog de formatter **DXPR Builder** gebruikt.
4. Bevestig dat het thema Bootstrap 5 laadt, of schakel bijladen in op `/admin/dxpr_studio/dxpr_builder/settings`.

## Wat nu?

- [Bijwerken](/nl/hc/documentatie/dxpr-builder-leren/aan-de-slag/bijwerken): routine-updates binnen een reeks
- [Wijzigingenlog](/nl/hc/documentation/learn-dxpr-builder/getting-started/changelog): wat elke release wijzigde
- [Instellingenreferentie](/nl/hc/documentatie/dxpr-builder-leren/referentie/configuratiereferentie): elke sleutel die de updatehooks raken