javax.jcr.nodetype.ConstraintViolationException: Fehler OakConstraint0027, wenn Benutzer und Gruppen in AEM migriert werden.

Problem

Beim Migrieren von Benutzern und Gruppen von einer AEM zu einer anderen über Package Manager wird der folgende Fehler angezeigt:

26.01.2017 16:03:20.024 *ERROR* [qtp2078058939-7783] org.apache.jackrabbit.vault.fs.io.Importer Error while committing : javax.jcr.nodetype.ConstraintViolationException: OakConstraint0027: The admin user cannot be removed.
javax.jcr.nodetype.ConstraintViolationException: OakConstraint0027: The admin user cannot be removed.
Caused by: org.apache.jackrabbit.oak.api.CommitFailedException: OakConstraint0027: The admin user cannot be removed

Umgebung

CQ5.x, AEM 6.x

Lösung

Wenn Sie Benutzer und Gruppen verpacken, sollten Sie sicherstellen, dass Sie keine Verpackung des Benutzers einschließlich des Administrators und anonymen Benutzern vorsehen.  Zusätzlich müssen Sie den Filtermodus zum Zusammenführen von Paketen verwenden.

  1. Navigieren Sie zu der App CRXDE Lite, /crx/de/index.jsp, und melden Sie sich als Benutzer mit Administratorrechten (auf dem alten System) an.

  2. Gehen Sie auf Tools => Abfrage

  3. Geben Sie die Abfrage unten auf dem Abfragefeld ein, um den Benutzer mit Administratorrechten zu finden:

    /jcr:root/home/users//element(*,rep:User)[@rep:principalName="admin"]

  4. Klicken Sie Ausführen und kopieren Sie den Pfad des Administrator-Benutzerknotens in die Ergebnissen in eine Textdatei.

  5. Wiederholen Sie Schritt 3 mit einer Abfrage für anonyme Benutzer:

    /jcr:root/home/users//element(*,rep:User)[@rep:principalName="anonymous"]

  6. Kliecken Sie Ausführen und kopieren Sie den Knoten des anonymen Benutzers in den Ergebnissen in eine Textdatei (nun haben Sie zwei Pfade, einen für „Administrator“ und einen für „Anonym“)
    Zum Beispiel:
    /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv – Benutzer mit Administratorrechten im System, in dem ich das Paket erstelle
    /home/users/K/Kj1406Qo9IDODc_nk5Ib – anonymer Benutzer im System, in dem ich das Paket erstelle

  7. Gehen Sie zum AEM-Paketmanager, http://host:port/crx/packmgr/index.jsp, und melden Sie sich als Administrator an.

  8.  Erstellen Sie ein Paket „Benutzer“

  9. Fügen Sie der Konfiguration für /home/users mit diesen Auschlussregeln (im /home/users-Filter) einen Filter hinzu:

    exclude /home/users/.*/.tokens
    exclude /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
    exclude /home/users/K/Kj1406Qo9IDODc_nk5Ib
    exclude /home/users/a/admin
    exclude /home/users/a/anonymous
    exclude /home/users/system
    exclude /home/users/geometrixx
    exclude /home/users/media
    exclude /home/users/projects
    exclude /home/users/mac

  10. Erstellen Sie das Paket.

  11. Laden Sie das Paket herunter.

  12. Öffnen Sie die Zip-Datei des Pakets auf Ihrem Computer.

  13. Öffnen Sie die Datei META-INF/vault/filter.xml in einem Texteditor.

  14. Fügen Sie mode="merge" dem Tag hinzu, z. B.:

       










    <?xml version="1.0" encoding="UTF-8"?>
    <workspaceFilter version="1.0">
      <filter root="/home/users" mode="merge">
        <exclude pattern="/home/users/.*/.tokens"/>
        <exclude pattern="/home/users/Q/QY5FIMXeQIbGpwZtQ3Dv"/>
        <exclude pattern="/home/users/K/Kj1406Qo9IDODc_nk5Ib"/>
        <exclude pattern="/home/users/a/admin"/>
        <exclude pattern="/home/users/a/anonymous"/>
        <exclude pattern="/home/users/system"/>
        <exclude pattern="/home/users/geometrixx"/>
        <exclude pattern="/home/users/media"/>
        <exclude pattern="/home/users/projects"/>
        <exclude pattern="/home/users/mac"/>
      </filter>
    </workspaceFilter>
  15.  Komprimieren Sie die geänderten Paketinhalte wieder, sodass sie die Änderung enthalten.

  16. Erstellen Sie ein Paket „Gruppen“, das eine Filterregel /home/groups enthält.

  17. Wiederholen Sie die Schritte 10-15 für das Gruppenpaket.

  18. (Nur Aktualisierung): Wenn Sie eine Migration auf eine neuere AEM-Version durchführen, installieren Sie eine neue lokale AEM-Instanz (ohne Beispielinhalte) und installieren Sie dort das Benutzer- und das Gruppenpaket.  Führen Sie anschließend eine ersetzende Aktualisierung für diese Instanz durch. Nach der Aktualisierung verpacken Sie die Benutzer und Gruppen erneut und laden die aktuellere Version der Pakete herunter.

  19. Installieren Sie das Benutzerpaket auf dem neuen System.

  20. Installieren Sie das Gruppenpaket auf dem neuen System.

Adobe-Logo

Bei Ihrem Konto anmelden