---
url: 'https://dxpr.com/de/hc/dokumentation/dxpr-builder-lernen/erste-schritte/migration-von-1x-auf-3x'
title: 'Von DXPR Builder 1.x oder 2.x migrieren | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-23T23:55:25+00:00'
updated: '2026-10-24T20:03:43+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: |-
  DXPR Builder 3.x aktualisiert direkt aus jedem 1.x- oder
  2.x-Release. Composer tauscht den Code und
  drush updatedb führt die Update-Hooks in
  dxpr_builder.install aus, die Konfiguration
  und Inhalte konvertieren. Diese Seite listet auf, was diese Hooks tun,
  was sich für eigenen Code geändert hat und wie Sie das
  Ergebnis prüfen. Release-Daten stammen aus Git-Tags; siehe
  Ältere Versionen.
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: 'Von DXPR Builder 1.x oder 2.x migrieren'
      description: |-
        DXPR Builder 3.x aktualisiert direkt aus jedem 1.x- oder
        2.x-Release. Composer tauscht den Code und
        drush updatedb führt die Update-Hooks in
        dxpr_builder.install aus, die Konfiguration
        und Inhalte konvertieren. Diese Seite listet auf, was diese Hooks tun,
        was sich für eigenen Code geändert hat und wie Sie das
        Ergebnis prüfen. Release-Daten stammen aus Git-Tags; siehe
        Ältere Versionen.
      image:
        '@type': ImageObject
        url: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
        width: '1200'
        height: '630'
      datePublished: '2026-10-23T23:55:25+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/de/hc/dokumentation/dxpr-builder-lernen/erste-schritte/migration-von-1x-auf-3x'
      articleSection: 'Von anderem Builder wechseln'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/de/hc/dokumentation/dxpr-builder-lernen/erste-schritte/migration-von-1x-auf-3x'
      description: |-
        DXPR Builder 3.x aktualisiert direkt aus jedem 1.x- oder
        2.x-Release. Composer tauscht den Code und
        drush updatedb führt die Update-Hooks in
        dxpr_builder.install aus, die Konfiguration
        und Inhalte konvertieren. Diese Seite listet auf, was diese Hooks tun,
        was sich für eigenen Code geändert hat und wie Sie das
        Ergebnis prüfen. Release-Daten stammen aus Git-Tags; siehe
        Ältere Versionen.
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: Startseite
            item: 'https://dxpr.com/de'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: de
---
[Hilfe-Center](/de/hc)/[Dokumentation](/de/hc/dokumentation) /[DXPR Builder lernen](/de/hc/documentation/learn-dxpr-builder) /[Hier starten](/de/hc/documentation/learn-dxpr-builder/start-here) /[Von anderem Builder wechseln](/de/hc/documentation/learn-dxpr-builder/migration) # Von DXPR Builder 1.x oder 2.x migrieren.

 DXPR Builder lernenHier startenVon anderem Builder wechseln

   ## In diesem Leitfaden

 Verwandte Leitfäden

- [DXPR Builder aktualisieren](/de/hc/dokumentation/dxpr-builder-lernen/erste-schritte/aktualisieren)
- [Changelog](/de/hc/dokumentation/dxpr-builder-lernen/erste-schritte/changelog)
- [Konfigurationsreferenz](/de/hc/dokumentation/dxpr-builder-lernen/referenz/konfigurationsreferenz)

DXPR Builder 3.x aktualisiert direkt aus jedem 1.x- oder 2.x-Release. Composer tauscht den Code und `drush updatedb` führt die Update-Hooks in `dxpr_builder.install` aus, die Konfiguration und Inhalte konvertieren. Diese Seite listet auf, was diese Hooks tun, was sich für eigenen Code geändert hat und wie Sie das Ergebnis prüfen. Release-Daten stammen aus Git-Tags; siehe [Ältere Versionen](/de/hc/dokumentation/dxpr-builder-lernen/erste-schritte/aeltere-versionen).

## Versionsgeschichte in Kürze

| Serie | Drupal | Hinweise |
|---|---|---|
| 7.x-1.x | Drupal 7 | Verkauft als Glazed Builder, später umbenannt. |
| 1.x (8.x-1.x) | Drupal 8 und 9 | Modul-Maschinenname `dxpr_builder` ab dem ersten 1.x-Release im Mai 2020. Letztes Release 1.8.8. |
| 2.x | Drupal 9.3 bis 11 | CKEditor 5, Key-Modul-Unterstützung, erste KI-Funktionen. Letztes Release 2.8.1. |
| 3.x | Drupal 10.2 und 11 | Nur Bootstrap 5, Key-Modul erforderlich, Inhaltsmigrationen, KI-Seiten- und Bildgenerierung. |

Der Maschinenname hat sich zwischen 1.x und 3.x nicht geändert. Inhalte mit Markup aus der Glazed-Ära müssen auf 1.x oder 2.x migriert werden, bevor Sie upgraden; 3.x schreibt den Glazed-Namen nicht mehr um (siehe unten).

## Anforderungen vor dem Start

- Drupal 10.2 oder neuer oder Drupal 11 (`core_version_requirement` in `dxpr_builder.info.yml`).
- Das Key-Modul. Es ist eine harte Abhängigkeit in 3.x; `dxpr_builder_update_9020()` installiert es, wenn `drush updatedb` feststellt, dass es fehlt.
- Einen Produktschlüssel für DXPR Builder 2.0.0 oder neuer. Schlüssel ohne `dxpr_tier`-Claim werden vom Einstellungsformular abgelehnt.
- Ein Theme, das Bootstrap 5 liefert, oder die **Bootstrap 5**-Sideload-Option. Bootstrap-3- und 4-Sideloading gibt es nicht mehr.

## Migrationsschritte

1. Sichern Sie Datenbank und Dateien:

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

    ```
2. Aktualisieren Sie den Code mit Composer. 3.x erscheint derzeit als Vorab-Releases, erlauben Sie diese also:

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

    ```
3. Führen Sie die Update-Hooks aus und bauen Sie die Caches neu auf:

    ```bash
    drush updatedb
    drush cache:rebuild

    ```

    Mehrere 3.x-Hooks verarbeiten jeden DXPR-Builder-Feldwert in Batches (siehe unten). Auf großen Websites dauern sie Minuten, nicht Sekunden.
4. Öffnen Sie `/admin/dxpr_studio/dxpr_builder/settings`und prüfen Sie den Bereich **License**. Nach Update 9020 ist die **Storage method** **Key module**und der **Key** ist `DXPR Builder JWT`(`dxpr_builder_jwt`).
5. Prüfen Sie **Sideload Bootstrap files** auf derselben Seite. Websites mit gewähltem Bootstrap 3 oder 4 stehen nun auf **Bootstrap 5**.
6. Öffnen Sie `/admin/dxpr_studio/dxpr_builder/ai_settings`und entscheiden Sie, ob die drei KI-Schalter, die standardmäßig eingeschaltet sind, eingeschaltet bleiben sollen.
7. Besuchen Sie Seiten, die DXPR Builder nutzen, und vergewissern Sie sich, dass sie korrekt rendern und sich bearbeiten lassen.

## Was die Update-Hooks tun

Hooks mit den Nummern 8005 bis 8025 kamen in 1.x. Eine 1.x-Website führt alles ab 8026 aus; eine 2.8.0- oder 2.8.1-Website führt 8040 und ab 9014 aus. Die Funktionsnamen lauten `dxpr_builder_update_NNNN()`.

### In 2.x hinzugefügt (läuft bei Herkunft aus 1.x)

| Hook | Was er tut |
|---|---|
| 8026 | Aktualisiert den zentralen DXPR-Builder-Benutzerspeicher. |
| 8027 | Fügt den Lizenzinfo-Block und eine Spalte „DXPR Builder User“ zur People-View hinzu. |
| 8028 | Erstellt die Tabelle `dxpr_lock` für Inhaltssperren. |
| 8029 | Fügt den Lizenzblock zum Benutzerlizenz-Dashboard hinzu. |
| 8030 | Stellt die Bootstrap-Einstellung um, nachdem die Option „Bootstrap 3 Light“ entfernt wurde. |
| 8031 | Aktiviert den Lizenzinfo-Block, wo er deaktiviert installiert war. |
| 8032 | Entfernt blockierte Benutzer aus dem Lizenzspeicher. |
| 8033 | Initialisiert `drm_last_contact`. |
| 8034 | Installiert das Benutzerfeld `dxpr_user_is_disavowed` und die Avow-/Disavow-Benutzeraktionen. |
| 8035 | Initialisiert die Einstellung `hide_reminders`. |
| 8036 | Migriert CKEditor-4-Symbolleistenschaltflächennamen in Profilen zu CKEditor 5. |
| 8037 | Fügt einen Standard-Bildstil für schnell ladende Bilder hinzu. |
| 8038 | Leert Caches, um die Key-Modul-Integrationsdienste zu registrieren. |
| 8039 | Repariert Bildstile mit unvollständigen `image_scale_and_crop`-Einstellungen. |
| 9007 | Erstellt die Vokabulare `ai_tone_of_voice` und `ai_agent_commands` mit Standardbegriffen. |
| 9008 | Setzt `ai_enabled` auf true und entfernt den alten Schlüssel `ai_page_enabled`. |
| 9009 | Verschiebt `drm_last_contact` von der Konfiguration in den State. |
| 9010 | Leert Caches. |
| 9011 | Aktiviert die Schaltflächen AI Assistant und AI Tone of Voice in jedem Profil. |
| 9012 | Stellt `ai_page_enabled` mit Standard true wieder her. |
| 9013 | Setzt die KI-Ausgabefilter-Vorgaben (`ai_output_allowed_domains`). |
| 9015 | Fügt `ai_image_enabled` mit Standard true hinzu. |

### In 3.x hinzugefügt (läuft bei Herkunft aus 1.x oder 2.x)

| Hook | Was er tut |
|---|---|
| 8040 | Normalisiert `bootstrap` auf `bs5`; die Werte `1` (Bootstrap 3) und `bs4` werden umgeschrieben. |
| 9014 | Batch: Konvertiert Owl-Carousel-Markup in Inhalten zum Bootstrap-Karussell (`src/Migration/OwlCarouselMigration.php`). |
| 9016 | Fügt `ai_user_model_selection` mit Standard true hinzu. |
| 9017 | Batch: Konvertiert Circliful-Kreis-Counter zu Bootstrap-Progress-Markup (`CircleCounterMigration.php`). |
| 9018 | Batch: Konvertiert Legacy-Progress-Bar-Markup zur Bootstrap-Progress-Struktur (`ProgressBarMigration.php`). |
| 9020 | Installiert das Key-Modul, verschiebt `json_web_token` in die Key-Entity `dxpr_builder_jwt`, setzt `api_key_storage` auf `key` und leert den Klartextwert. |
| 9021 | Füllt die `type`-Eigenschaft von Benutzervorlagen aus ihrem Markup auf. |
| 9022 | Batch: Ergänzt `data-entity-type` und `data-entity-uuid` an internen `/node/N`-Links (`EntityLinkMigration.php`). |
| 9023 | Batch: Repariert Textformat, Zusammenfassung und gelöschte Deltas, die Update 9022 auf `text_with_summary`-Feldern verloren hat. |
| 9024 | Batch: Reichert Alias-Links intern genauso an wie 9022 (`AliasLinkMigration.php`). |
| 9025 | Leert `tone_of_voice_vocabulary`, wenn es auf ein nicht mehr existierendes Vokabular zeigt. |
| 9026 | Leert einen Klartext-`json_web_token` in den Einstellungen, wenn der Schlüssel in einer Key-Entity lebt. |

Es gibt kein Update 9019.

### Inhaltsmigrationen

3.x führt Inhaltsmigrationen nur in Batch aus; es gibt keine Konvertierung mehr zur Renderzeit. Die Migrationsstatusseite (`/admin/dxpr_studio/dxpr_builder/migration-status`) und der Statusbericht listen ausstehende Inhalte. Die Update-Hooks oben migrieren sie, ebenso die Aktionen **Run now** und **Run all pending migrations** auf dieser Seite. Migrationen sind Dienste mit dem Tag `dxpr_builder.content_migration`(`dxpr_builder.services.yml`). Ein Batch, der Fehler aufzeichnet, wird nicht als abgeschlossen markiert; die fehlgeschlagenen Einträge werden protokolliert und bleiben ausstehend.

Das `glazed_to_dxpr`-Zeichenketten-Rewriting, das 1.x und 2.x zur Renderzeit anwendeten, ist entfernt. Der Glazed-Name fiel mit 1.0.0 im Mai 2020 und alle Inhalte der Glazed- und Carbide-Ära gelten als durch diese Releases migriert. Das Rewriting war eine schlichte Zeichenkettenersetzung. Auf Websites, deren Inhalte Glazed lediglich erwähnen (Support-Artikel, Dokumentationslinks), hätte es Prosa umgeschrieben und Links gebrochen statt Markup zu migrieren. Websites, die noch Glazed-Klassennamen in gespeicherten Inhalten halten, sollten zuerst das 2.x-Release einspielen.

## Änderungen für eigenen Code

### Feld-Formatierer

Die Feld-Formatierer-ID ist `dxpr_builder_text`(Bezeichnung „DXPR Builder“, `src/Plugin/Field/FieldFormatter/DxprBuilderFormatter.php`), unverändert seit 1.x. Sie hat eine Einstellung, `profile`, die für die rollenbasierte Vorgabe leer ist oder eine Profil-ID. Prüfen Sie, ob jedes Builder- Feld diesen Formatierer auf seiner Anzeige weiter nutzt; die Reparatur von Update 9023 beschränkt sich auf Felder, die das tun.

### Hooks

`dxpr_builder.api.php` dokumentiert die 3.x-Hooks. Benennen Sie die Glazed-Builder-Hooks wie folgt um:

| 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()` | Entfernt; kein Ersatz-Hook. |
| none | `hook_dxpr_builder_icon_sets_alter(array &$icon_sets)`, neu. Icon-Sets werden in `MODULE.dxpr_icon_sets.yml`-Dateien deklariert. |

### CSS- und Utility-Klassen

Eigenes CSS, das auf Glazed-Klassennamen zielt, muss die DXPR-Namen nutzen, zum Beispiel `dxpr-theme-util`, `panel-dxpr` und `dxpr-builder`. Utility-Klassen, die der Editor zeigt, werden über `hook_dxpr_builder_classes_alter()` bereitgestellt.

### Konfiguration und Deployment

- Entfernen Sie `json_web_token` aus jeder committeten Konfiguration; nach Update 9020 lebt der Schlüssel in der Key-Entity `dxpr_builder_jwt`. Dieser Key nutzt den **Configuration**-Anbieter, sodass der Schlüssel weiterhin als `key.key.dxpr_builder_jwt` exportiert wird. Schalten Sie ihn auf den **File**- oder **Environment**-Anbieter unter `/admin/config/system/keys` um, um ihn aus Exporten herauszuhalten.
- Konfigurationsexporte enthalten nun die beiden KI- Vokabulare und ihre Begriffe.
- Profile exportieren CKEditor-5-Schaltflächennamen in `inline_buttons` und `modal_buttons`.

## Fehlerbehebung

Wenn Inhalte nach dem Update nicht korrekt angezeigt werden:

1. Führen Sie `drush cache:rebuild` aus.
2. Prüfen Sie `/admin/reports/dblog` auf Meldungen aus dem `dxpr_builder`-Kanal; Batch-Migrationen protokollieren die übersprungenen Einträge.
3. Vergewissern Sie sich, dass die Anzeige jedes Builder-Felds weiterhin den **DXPR Builder**-Formatierer nutzt.
4. Vergewissern Sie sich, dass das Theme Bootstrap 5 lädt, oder aktivieren Sie Sideloading unter `/admin/dxpr_studio/dxpr_builder/settings`.

## Wie geht es weiter?

- [Aktualisieren](/de/hc/dokumentation/dxpr-builder-lernen/erste-schritte/aktualisieren): Routine-Updates innerhalb einer Serie
- [Changelog](/de/hc/dokumentation/dxpr-builder-lernen/erste-schritte/changelog): Was jedes Release geändert hat
- [Konfigurationsreferenz](/de/hc/dokumentation/dxpr-builder-lernen/referenz/konfigurationsreferenz): Jeder Schlüssel, den die Update-Hooks berühren