---
url: 'https://dxpr.com/fr/hc/documentation/apprendre-dxpr-builder/demarrage/migration-de-1-x-vers-3-x'
title: 'Migrer depuis DXPR Builder 1.x ou 2.x | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T14:42:30+00:00'
updated: '2026-10-24T20:03:43+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: 'DXPR Builder 3.x se met à jour en place depuis toute version 1.x ou 2.x. Composer remplace le code, et drush updatedb exécute les hooks de mise à jour de dxpr_builder.install qui convertissent la configuration et le contenu. Cette page liste ce que font ces hooks, ce qui a changé pour le code sur mesure, et comment vérifier le résultat. Les dates de version viennent des tags git ; voir Anciennes versions.'
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-24T20:03:43+0000'
  'image:alt': 'DXPR, powered by Drupal: AI-powered Drupal for marketers.'
schema:
  '@context': 'https://schema.org'
  '@graph':
    -
      mainEntity: {  }
    -
      '@type': TechArticle
      headline: 'Migrer depuis DXPR Builder 1.x ou 2.x'
      description: 'DXPR Builder 3.x se met à jour en place depuis toute version 1.x ou 2.x. Composer remplace le code, et drush updatedb exécute les hooks de mise à jour de dxpr_builder.install qui convertissent la configuration et le contenu. Cette page liste ce que font ces hooks, ce qui a changé pour le code sur mesure, et comment vérifier le résultat. Les dates de version viennent des tags git ; voir Anciennes versions.'
      image:
        '@type': ImageObject
        url: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
        width: '1200'
        height: '630'
      datePublished: '2026-10-24T14:42:30+0000'
      dateModified: '2026-10-24T20:03:43+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/fr/hc/documentation/apprendre-dxpr-builder/demarrage/migration-de-1-x-vers-3-x'
      articleSection: 'Quitter un autre builder'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/fr/hc/documentation/apprendre-dxpr-builder/demarrage/migration-de-1-x-vers-3-x'
      description: 'DXPR Builder 3.x se met à jour en place depuis toute version 1.x ou 2.x. Composer remplace le code, et drush updatedb exécute les hooks de mise à jour de dxpr_builder.install qui convertissent la configuration et le contenu. Cette page liste ce que font ces hooks, ce qui a changé pour le code sur mesure, et comment vérifier le résultat. Les dates de version viennent des tags git ; voir Anciennes versions.'
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: Accueil
            item: 'https://dxpr.com/fr'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: fr
---
[Centre d’aide](/fr/hc)/[Documentation](/fr/hc/documentation) /[Apprendre DXPR Builder](/fr/hc/documentation/learn-dxpr-builder) /[Commencer ici](/fr/hc/documentation/learn-dxpr-builder/start-here) /[Quitter un autre builder](/fr/hc/documentation/learn-dxpr-builder/migration) # Migrer depuis DXPR Builder 1.x ou 2.x.

 Apprendre DXPR BuilderCommencer iciQuitter un autre builder

   ## Dans ce guide

 Guides associés

- [Mettre à jour DXPR Builder](/fr/hc/documentation/apprendre-dxpr-builder/demarrage/mettre-a-jour)
- [Journal des changements](/fr/hc/documentation/apprendre-dxpr-builder/demarrage/journal-des-modifications)
- [Référence de configuration](/fr/hc/documentation/apprendre-dxpr-builder/reference/reference-de-configuration)

DXPR Builder 3.x se met à jour en place depuis toute version 1.x ou 2.x. Composer remplace le code, et `drush updatedb` exécute les hooks de mise à jour de `dxpr_builder.install` qui convertissent la configuration et le contenu. Cette page liste ce que font ces hooks, ce qui a changé pour le code sur mesure, et comment vérifier le résultat. Les dates de version viennent des tags git ; voir [Anciennes versions](/fr/hc/documentation/apprendre-dxpr-builder/demarrage/journal-des-modifications-anciennes-versions).

## Historique des versions en bref

| Série | Drupal | Notes |
|---|---|---|
| 7.x-1.x | Drupal 7 | Vendu comme Glazed Builder, renommé ensuite. |
| 1.x (8.x-1.x) | Drupal 8 et 9 | Nom machine du module `dxpr_builder` depuis la première version 1.x en mai 2020. Dernière version 1.8.8. |
| 2.x | Drupal 9.3 à 11 | CKEditor 5, prise en charge du module Key, premières fonctions IA. Dernière version 2.8.1. |
| 3.x | Drupal 10.2 et 11 | Bootstrap 5 uniquement, module Key requis, migrations de contenu, génération de pages et d’images IA. |

Le nom machine n’a pas changé entre 1.x et 3.x. Le contenu portant encore du balisage de l’ère Glazed doit être migré sur 1.x ou 2.x avant la mise à niveau ; 3.x ne réécrit plus le nom Glazed (voir ci-dessous).

## Prérequis avant de commencer

- Drupal 10.2 ou ultérieur, ou Drupal 11 (`core_version_requirement` dans `dxpr_builder.info.yml`).
- Le module Key. C’est une dépendance stricte en 3.x ; `dxpr_builder_update_9020()` l’installe si `drush updatedb` le trouve manquant.
- Une clé produit émise pour DXPR Builder 2.0.0 ou ultérieur. Les clés sans claim `dxpr_tier` sont rejetées par le formulaire de paramètres.
- Un thème qui fournit Bootstrap 5, ou l’option sideload **Bootstrap 5**. Le sideload Bootstrap 3 et 4 n’existe plus.

## Étapes de migration

1. Sauvegardez la base de données et les fichiers :

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

    ```
2. Mettez à jour le code avec Composer. 3.x est pour l’instant publié en pré-versions, autorisez-les donc :

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

    ```
3. Exécutez les hooks de mise à jour et reconstruisez les caches :

    ```bash
    drush updatedb
    drush cache:rebuild

    ```

    Plusieurs hooks 3.x traitent chaque valeur de champ DXPR Builder par lots (voir ci-dessous). Sur de grands sites, ils prennent des minutes, pas des secondes.
4. Ouvrez `/admin/dxpr_studio/dxpr_builder/settings` et vérifiez la section **License**. Après la mise à jour 9020, la **Storage method** est **Key module** et la **Key** est `DXPR Builder JWT` (`dxpr_builder_jwt`).
5. Vérifiez **Sideload Bootstrap files** sur la même page. Les sites qui avaient Bootstrap 3 ou 4 sélectionné sont maintenant sur **Bootstrap 5**.
6. Ouvrez `/admin/dxpr_studio/dxpr_builder/ai_settings` et décidez si les trois interrupteurs IA, activés par défaut, doivent rester activés.
7. Visitez les pages qui utilisent DXPR Builder et vérifiez qu’elles s’affichent et se modifient correctement.

## Ce que font les hooks de mise à jour

Les hooks numérotés 8005 à 8025 sont sortis en 1.x. Un site 1.x exécute tout depuis 8026 ; un site 2.8.0 ou 2.8.1 exécute 8040 et 9014 et suivants. Les noms de fonctions sont `dxpr_builder_update_NNNN()`.

### Ajoutés en 2.x (exécutés en venant de 1.x)

| Hook | Fonction |
|---|---|
| 8026 | Met à jour le stockage central des utilisateurs DXPR Builder. |
| 8027 | Ajoute le bloc d’infos de licence et une colonne « DXPR Builder User » à la vue People. |
| 8028 | Crée la table `dxpr_lock` pour le verrouillage de contenu. |
| 8029 | Ajoute le bloc des licences au tableau de bord des licences utilisateur. |
| 8030 | Bascule le réglage Bootstrap après la suppression de l’option « Bootstrap 3 Light ». |
| 8031 | Active le bloc d’infos de licence là où il était installé désactivé. |
| 8032 | Retire les utilisateurs bloqués du stockage des licences. |
| 8033 | Initialise `drm_last_contact`. |
| 8034 | Installe le champ utilisateur `dxpr_user_is_disavowed` et les actions d’utilisateur avow/disavow. |
| 8035 | Initialise le paramètre `hide_reminders`. |
| 8036 | Migre les noms de boutons de barre d’outils CKEditor 4 des profils vers CKEditor 5. |
| 8037 | Ajoute un style d’image par défaut pour des images à chargement rapide. |
| 8038 | Vide les caches pour enregistrer les services d’intégration du module Key. |
| 8039 | Répare les styles d’image avec des paramètres `image_scale_and_crop` incomplets. |
| 9007 | Crée les vocabulaires `ai_tone_of_voice` et `ai_agent_commands` avec leurs termes par défaut. |
| 9008 | Règle `ai_enabled` sur true et supprime l’ancienne clé `ai_page_enabled`. |
| 9009 | Déplace `drm_last_contact` de la configuration vers l’état. |
| 9010 | Vide les caches. |
| 9011 | Active les boutons AI Assistant et AI Tone of Voice dans chaque profil. |
| 9012 | Restaure `ai_page_enabled` avec la valeur par défaut true. |
| 9013 | Définit les valeurs par défaut du filtrage de sortie IA (`ai_output_allowed_domains`). |
| 9015 | Ajoute `ai_image_enabled` avec la valeur par défaut true. |

### Ajoutés en 3.x (exécutés en venant de 1.x ou 2.x)

| Hook | Fonction |
|---|---|
| 8040 | Normalise `bootstrap` en `bs5` ; les valeurs `1` (Bootstrap 3) et `bs4` sont réécrites. |
| 9014 | Par lot : convertit le balisage Owl Carousel du contenu en carrousel Bootstrap (`src/Migration/OwlCarouselMigration.php`). |
| 9016 | Ajoute `ai_user_model_selection` avec la valeur par défaut true. |
| 9017 | Par lot : convertit les compteurs circulaires circliful en balisage de progression Bootstrap (`CircleCounterMigration.php`). |
| 9018 | Par lot : convertit l’ancien balisage de barre de progression en structure de progression Bootstrap (`ProgressBarMigration.php`). |
| 9020 | Installe le module Key, déplace `json_web_token` dans l’entité Key `dxpr_builder_jwt`, règle `api_key_storage` sur `key` et efface la valeur en clair. |
| 9021 | Remplit a posteriori la propriété `type` des modèles d’utilisateur depuis leur balisage. |
| 9022 | Par lot : ajoute `data-entity-type` et `data-entity-uuid` aux liens internes `/node/N` (`EntityLinkMigration.php`). |
| 9023 | Par lot : répare le format de texte, le résumé et les deltas supprimés que la mise à jour 9022 a perdus sur les champs `text_with_summary`. |
| 9024 | Par lot : enrichit les liens internes avec alias de la même façon que 9022 (`AliasLinkMigration.php`). |
| 9025 | Efface `tone_of_voice_vocabulary` quand il pointe vers un vocabulaire qui n’existe plus. |
| 9026 | Efface un `json_web_token` en clair resté dans les paramètres quand la clé vit dans une entité Key. |

Il n’y a pas de mise à jour 9019.

### Migrations de contenu

3.x exécute les migrations de contenu par lot uniquement ; il n’y a plus de conversion au rendu. La page d’état des migrations (`/admin/dxpr_studio/dxpr_builder/migration-status`) et le rapport d’état listent le contenu en attente. Les hooks de mise à jour ci-dessus le migrent, de même que les actions **Run now** et **Run all pending migrations** de cette page. Les migrations sont des services tagués `dxpr_builder.content_migration` (`dxpr_builder.services.yml`). Un lot qui enregistre des échecs n’est pas marqué terminé ; les éléments échoués sont journalisés et restent en attente.

La réécriture de chaîne `glazed_to_dxpr` que 1.x et 2.x appliquaient au rendu a été supprimée. Le nom Glazed a été abandonné avec la 1.0.0 en mai 2020 et tout le contenu de l’ère Glazed et Carbide est supposé avoir été migré par ces versions. La réécriture était un simple remplacement de chaîne. Sur les sites dont le contenu mentionne seulement Glazed (articles de support, liens de documentation), elle aurait réécrit de la prose et cassé des liens au lieu de migrer du balisage. Les sites qui détiennent encore des noms de classe Glazed dans du contenu stocké devraient d’abord exécuter la version 2.x.

## Changements pour le code sur mesure

### Formateur d’affichage

L’id du formateur d’affichage est `dxpr_builder_text` (libellé « DXPR Builder », `src/Plugin/Field/FieldFormatter/DxprBuilderFormatter.php`), inchangé depuis 1.x. Il a un paramètre, `profile`, qui est vide pour la valeur par défaut basée sur les rôles ou un id de profil. Vérifiez que chaque champ du constructeur utilise toujours ce formateur sur son affichage ; la réparation de la mise à jour 9023 se limite aux champs qui le font.

### Hooks

`dxpr_builder.api.php` documente les hooks 3.x. Renommez ceux de Glazed Builder comme suit :

| Hook Glazed Builder | Hook DXPR Builder 3.x |
|---|---|
| `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()` | Supprimé ; pas de hook de remplacement. |
| none | `hook_dxpr_builder_icon_sets_alter(array &$icon_sets)`, nouveau. Les jeux d’icônes sont déclarés dans des fichiers `MODULE.dxpr_icon_sets.yml`. |

### CSS et classes utilitaires

Le CSS sur mesure qui cible des noms de classe Glazed doit utiliser les noms DXPR, comme `dxpr-theme-util`, `panel-dxpr` et `dxpr-builder`. Les classes utilitaires exposées dans l’éditeur sont fournies via `hook_dxpr_builder_classes_alter()`.

### Configuration et déploiement

- Retirez `json_web_token` de toute configuration versionnée ; après la mise à jour 9020, la clé vit dans l’entité Key `dxpr_builder_jwt`. Cette Key utilise le fournisseur **Configuration**, la clé est donc toujours exportée comme `key.key.dxpr_builder_jwt`. Basculez-la vers le fournisseur **File** ou **Environment** à `/admin/config/system/keys` pour la garder hors des exports.
- Les exports de configuration incluent désormais les deux vocabulaires IA et leurs termes.
- Les profils exportent les noms de boutons CKEditor 5 dans `inline_buttons` et `modal_buttons`.

## Dépannage

Si le contenu ne s’affiche pas correctement après la mise à jour :

1. Exécutez `drush cache:rebuild`.
2. Vérifiez `/admin/reports/dblog` pour les messages du canal `dxpr_builder` ; les migrations par lot journalisent les éléments ignorés.
3. Vérifiez que l’affichage de chaque champ du constructeur utilise toujours le formateur **DXPR Builder**.
4. Vérifiez que le thème charge Bootstrap 5, ou activez le sideloading à `/admin/dxpr_studio/dxpr_builder/settings`.

## Et ensuite ?

- [Mises à jour](/fr/hc/documentation/apprendre-dxpr-builder/demarrage/mettre-a-jour) : les mises à jour de routine dans une série
- [Journal des changements](/fr/hc/documentation/apprendre-dxpr-builder/demarrage/journal-des-modifications) : ce que chaque version a changé
- [Référence de configuration](/fr/hc/documentation/apprendre-dxpr-builder/reference/reference-de-configuration) : chaque clé touchée par les hooks de mise à jour