javax.jcr.nodetype.ConstraintViolationException: OakConstraint0027-Fehler beim Migrieren von Benutzenden und Gruppen in AEM
Achten Sie beim Verpacken von Benutzern und Gruppen darauf, keine vorkonfigurierten Benutzer, einschließlich Admin- und anonymer Benutzer, zu verpacken. Sie müssen den Filtermodus für Zusammenführungspakete verwenden.
Beschreibung description
Umgebungen
Adobe Experience Manager 6.x (AEM 6.x)
Adobe Communique 5.x (Adobe CQ5.x)
Problem
Beim Migrieren von Benutzenden und Gruppen von einer AEM-Instanz in eine andere über Package Manager wird ein Fehler ähnlich dem folgenden 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
Auflösung resolution
Achten Sie beim Verpacken von Benutzenden und Gruppen darauf, keine vorkonfigurierten Benutzenden, einschließlich Admin- und anonymer Benutzender, zu verpacken.
Sie müssen den Filtermodus für Zusammenführungspakete verwenden.
Führen Sie diese Schritte aus, um das Problem zu beheben:
-
Wechseln Sie zu CRXDE lite App
/crx/de/index.jspund melden Sie sich als Administrator an (auf dem alten System). -
Navigieren Sie zu Tools
>Abfrage. -
Geben Sie im unteren Abfrage-Feld diese Abfrage ein, um den Admin-Benutzer zu finden:
code language-none /jcr:root/home/users//element(*,rep:User)[ @rep:principalName="admin"] -
Klicken Sie Ausführen und kopieren Sie den Pfad des Admin-Benutzerknotens in die Ergebnisse in eine Textdatei.
-
Wiederholen Sie Schritt 3 mit einer Abfrage für einen anonymen Benutzer:
code language-none /jcr:root/home/users//element(*,rep:User)[ @rep:principalName="anonymous"] -
Klicken Sie Ausführen und kopieren Sie den Pfad des Knotens des anonymen Benutzers in die Ergebnisse in eine Textdatei (Sie sollten also jetzt zwei Pfade haben, einen für „Admin“ und einen für „Anonym„).
z. B.:
/home/users/Q/QY5FIMXeQIbGpwZtQ3Dv: Administratorbenutzer auf dem System, auf dem Sie das Paket erstellen/home/users/K/Kj1406Qo9IDODc_nk5Ib: anonymer Benutzer auf dem System, auf dem Sie das Paket erstellen -
Wechseln Sie zum AEM Package Manager,
http://host:port/crx/packmgr/index.jspund melden Sie sich als admin an. -
Erstellen Sie ein Paket mit dem Namen users.
-
Fügen Sie einen Filter mit diesen Ausschlussregeln (auf dem
/home/users-Filter) zur Paketkonfiguration für/home/usershinzu:code language-none 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 -
Erstellen Sie das Paket.
-
Laden Sie das Paket herunter.
-
Entpacken Sie die
package.zip-Datei auf Ihrem Computer. -
Öffnen Sie die Datei
META-INF/vault/filter.xmlin einem Texteditor. -
Fügen Sie dem Tag
mode="merge"hinzu.z. B.:
code language-none <?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> -
Komprimieren Sie den geänderten Paketinhalt neu, sodass er die Änderung enthält.
-
Erstellen Sie Gruppen-Paket, das eine
/home/groupsenthält. -
Wiederholen Sie Schritte 10-15 für das Paket groups.
-
(Nur Upgrade): Wenn Sie die Migration auf eine neuere AEM-Version durchführen, installieren Sie eine neue lokale AEM-Instanz (mit
nosamplecontent) und installieren Sie dort das Benutzerpaket und das Gruppenpaket. Führen Sie dann ein In-Place-Upgrade für diese Instanz durch. Komprimieren Sie nach dem Upgrade die Benutzer erneut, dann erneut die Gruppen und laden Sie die neuere Version der Pakete herunter. -
Installieren Sie das Benutzerpaket auf dem neuen System.
-
Installieren Sie das Gruppenpaket auf dem neuen System.