Problema
Ao atualizar o AEM, instalando um Service Pack (SP) ou um Cumulative Fix Pack (CFP), há um ConstraintViolationException conectado ao error.log.
Exemplo 1:
No exemplo abaixo, o erro estava relacionado ao nó/content/communitie durante a instalação do AEM6.3 SP1 CFP2. Esse nó é normalmente um sling: Pasta, mas no ambiente com o erro, o nó foi nt: pasta.
03.04.2018 16:28:09.921 *ERROR* [http-10.158.146.131:25104-2] org.apache.jackrabbit.vault.packaging.impl.ZipVaultPackage Error during install. javax.jcr.nodetype.ConstraintViolationException: OakConstraint0001: /content/communities[[nt:folder]]: No matching definition found for child node enablement with effective type [nt:unstructured, rep:AccessControllable]
Exemplo 2:
No exemplo abaixo, um erro semelhante quebrou a atualização do AEM 6.0 para 6.3. A instalação do pacote falhou porque o tipo de nó de /libs/settings/granite/operations/maintenance/granite_weekly era nt: folder ao invés de sling: Folder.
21.09.2017 12:03:18.132 *ERROR* [OsgiInstallerImpl] com.adobe.granite.installer.factory.packages.impl.PackageTransformer Error while processing install task of day/cq60/product:cq-platform-content:1.3.234. org.apache.jackrabbit.vault.packaging.PackageException: javax.jcr.nodetype.ConstraintViolationException: OakConstraint0001: /libs/settings/granite/operations/maintenance/granite_weekly[[nt:folder]]: No matching definition found for child node granite_AuditLogMaintenanceTask with effective type [nt:unstructured]
Ambiente
AEM 6.x
Causa
A causa é de versões herdadas do AEM que possuem um tipo de nó diferente para determinadas pastas. Quando o tipo de nó é alterado em versões futuras, esse erro é encontrado e interrompe as atualizações e/ou instalações de correção.
Resolução
Siga as etapas abaixo antes de aplicar o upgrade ou fix pack. Certifique-se de que nenhum usuário esteja no sistema.
- Acesse http://aem-host:port/crx/de/index.jsp e faça o login como usuário administrador.
- Navegue até o nó que está causando o erro. Por exemplo, no erro acima é / content / communities.
- Renomeie esse nó, por exemplo, /content/communities para /content/communities-old.
- Crie um nó com o tipo de nó correto. Por exemplo, /content/communities with nodetype sling: Folder ao invés de nt: folder.
- Clique em Salvar tudo.
- Mova todos os subnós do nó antigo para o mais novo que tenha o tipo de nó correto. Por exemplo, mova todos os subnós de / content/communities-old para / content/communities.
- Clique em Salvar tudo.