Etapa Aplicar
A etapa aplicar é aquela em que os registros no ambiente de destino são adicionados ou atualizados. Como na etapa de comparação, a etapa aplicar é na verdade diversas etapas combinadas para lidar idealmente com alto volume e dependências entre os registros da forma mais suave possível.
Antes de explicar as etapas de aplicar em detalhes, os seguintes pontos destacam o tipo de dados que pode ser incluído em determinado conjunto de dados.
-
Os registros não têm chaves externas e, portanto, não têm dependências em relação a outros registros. Exemplos: Mensagem, Perfil de Exibição.
-
Os registros com chaves externas que podem já estar no destino. Exemplos: Algoritmos para tipos de algoritmo existentes, Funções de Atividade para Tipos de Atividade existentes.
-
Os registros com chaves externas que são novos registros, mas também parte da migração. O CMA detectou o relacionamento no momento da exportação e agrupou os objetos na mesma transação. Exemplo: Tipo de Algoritmo Baseado em Script no qual o script também está na migração.
-
Os registros com chaves externas que são novos registros, mas também parte da migração. O CMA não detectou o relacionamento. Isso pode ocorrer se a chave externa referenciada estiver em uma coluna de parâmetro ou em XML e o plano de migração não incluía uma instrução para definir explicitamente o relacionamento. Exemplo, uma Zona que referencie um script de visibilidade.
-
Os registros com referências circulares no qual os dois registros sejam novos e parte da migração. O CMA detectou o relacionamento no momento da exportação e agrupou os objetos na mesma transação. Exemplo: Script de plug-in para um spot de plug-in do objeto de negócios. O script referencia ao objeto de negócios e o objeto de negócios referencia a um algoritmo para o tipo de algoritmo do script. Outro exemplo é quando o mesmo registro é mantido por vários objetos de manutenção e, portanto, existe em vários objetos de migração.
Para lidar com dados de alto volume, a primeira etapa no processo de aplicação é aplicar a lógica no nível do objeto de migração por uma tarefa em batch de múltiplos threads. Isso resultaria no sucesso da aplicação de todos os registros nas categorias 1 e 2 acima.
-
A dependência entre entidades mestre e de transação é geralmente hierárquica e, na maioria dos casos, direta. A ferramenta aproveita esse conhecimento para orquestrar o processamento de objetos de uma maneira ideal que segue a ordem de dependência tanto quanto possível. Observe que o relacionamento entre as entidades pode ser complexo e essa abordagem não elimina todos os erros relacionados à ordem de processamento, mas os reduz significativamente.
-
A dependência entre as entidades de configuração é mais complexa e entrelaçada e, portanto, os objetos de migração não são ordenados, ou seja, o processo em batch de vários threads pode não processar registros na ordem desejada.
-
Para superar o possível problema de erros relacionados à ordem de processamento, a etapa Aplicar tem uma funcionalidade especial, descrita com detalhes abaixo.
Para registros na categoria 5 acima, a referência circular significará que o processo de aplicação no nível de objeto não conseguirá adicionar ou atualizar esses registros. O processo de aplicação no nível de transação cobrirá esses registros. Isso é descrito em detalhes abaixo.
Aplicar Objetos
Depois que o Conjunto de Dados estiver no status Aplicar Objetos, o processo Monitoramento do Objeto de Migração - Aplicar (F1-MGOAP) será executado para tentar aplicar os objetos.
Ao usar processos em batch separados para dados de negócios, o processo Monitoramento do Objeto de Migração (Negócios) - Aplicar (F1-MGOAB) funciona da mesma forma para aplicar objetos de migração de negócios.
O processo em segundo plano junto com o algoritmo Aplicar tem uma funcionalidade especial para garantir que os registros nas categorias 3 e 4 (acima) sejam aplicados com sucesso nessa etapa:
-
O processo Monitoramento do Objeto de Migração - Aplicar é especial e seleciona novamente de maneira contínua registros no status Aprovado até não existirem registros que possam ser processados.
-
Quando é recebido um erro no algoritmo Aplicar Objeto, o algoritmo incrementa uma "contagem de iteração" no registro do objeto de migração. Se a contagem de iteração não exceder uma contagem máxima (registrada no algoritmo), o objeto permanecerá no status Aprovado e poderá ser selecionado para novo processamento. Se a contagem de iteração exceder o máximo definido no algoritmo, o registro passará para o status Erro ao Aplicar.
O diagrama a seguir é parte do ciclo de vida do objeto de migração que diz respeito à etapa Aplicar.

Na conclusão do processo de monitoramento de Aplicar, em geral, os objetos estarão no status Aplicado ou Erro ao Aplicar. Os registros no status Erro ao Aplicar estão nesse status por um de dois motivos.
-
Estão na categoria 5 descrita acima, na qual os registros têm uma referência circular com outro registro. Nesse contexto, a etapa Aplicar Transações descrita abaixo aplicaria os registros com sucesso.
-
Há algum outro erro não relacionado com os registros na migração atual. Nesse caso, pode ser necessária intervenção manual. Consulte mais informações na seção Resolvendo Erros abaixo.
Como mostrado no diagrama, o algoritmo Aplicar Objetos também pode detectar um motivo para que o objeto não possa ser aplicado. Isso pode ocorrer se o objeto no ambiente de destino tiver sido atualizado desde a etapa de comparação, tornando o SQL capturado naquele momento não mais aplicável. Se isso ocorrer, depois que a migração atual for totalmente aplicada, o arquivo original poderá ser importado novamente e novas comparações poderão ser geradas e aplicadas.
Aplicar Transações
Idealmente, depois da etapa Aplicar Objetos, todos os objetos estarão como Aplicadoou Erro ao Aplicar devido à situação de "referência circular". A etapa seguinte típica é transferir a responsabilidade para as transações. As transações de migração podem, então, tentar aplicar os objetos em massa.
Para garantir que diversos processos em segundo plano não tentem selecionar objetos de migração para executar a etapa Aplicar, as Transações podem somente tentar "aplicar meus objetos" se o Conjunto de Dados estiver no status Aplicar Transações.

Um algoritmo de monitoramento (executado pelo processo em batch de monitoramento do conjunto de dados) no status Aplicar Objetos verifica se todos os objetos de migração já não estão como Aprovados ou se a contagem de registros em Erro ao Aplicar não excede um limite configurado. Se for o caso, ele faz a transição automaticamente do registro para o status Aplicar Transações.
Se o número de objetos em Erro ao Aplicar exceder um limite configurado, o algoritmo de monitoramento não fará a transição automática do registro. Nesse caso, um usuário deverá definir se o número alto de erros pode ser resolvido ou se fará a transação manualmente para Aplicar Transações (apesar do alto número de erros). A seção Resolvendo Erros abaixo descreve etapas alternativas que o usuário pode realizar se houver erros.
Depois que o Conjunto de Dados estiver no status de Aplicar Transações, o processo Monitoramento de Transação da Migração - Aplicar (F1-MGTAP) será executado. Ele tenta aplicar os objetos da transação. Se nenhum objeto de migração tiver um erro, a transação de migração simplesmente passará para Aplicado. Se algum objeto de migração tiver Erro ao Aplicar, o processo em segundo plano e o algoritmo Aplicar terão uma funcionalidade especial para tentar superar as dependências em objetos migrados:
-
O algoritmo Aplicar seleciona todos os objetos de migração com erro e faz todo o SQL, validando em seguida todos os registros. Se houver objetos na transação com referências circulares, eles deverão passar pela validação nesse momento.
-
Como ainda pode haver algumas dependências entre as transações, é possível lidar com o erro semelhante da forma descrita na etapa Aplicar Objetos. Quando é recebido um erro no algoritmo do Objeto de Aplicar Transação por qualquer um dos objetos na transação, o algoritmo incrementa uma "contagem de iteração" no registro da transação de migração. Se a contagem de iteração não exceder uma contagem máxima (registrada no algoritmo), a transação permanecerá no status Pronto para Aplicar e poderá ser selecionada para novo processamento. Se a contagem de iteração exceder o máximo, o registro passará para o status Erro ao Aplicar. Observe que, se qualquer objeto na transação tiver um erro, nenhum dos objetos será aplicado. Todos permanecerão com erro.
-
O processo Monitoramento da Transação de Migração - Aplicar é especial e seleciona novamente de maneira contínua registros no status Pronto para Aplicar até não existirem registros que possam ser processados.
O diagrama a seguir é parte do ciclo de vida de transação da migração que diz respeito à etapa Aplicar, ilustrando os pontos acima.

Se ao final do processo Aplicar no nível da transação houver transações com erro (e, portanto, ainda houver objetos com erro), um usuário deverá revisar os erros e determinar como resolvê-los. Consulte mais informações na seção Resolvendo Erros abaixo.
Resolvendo Erros
Como mencionado nas seções anteriores, os erros podem surgir depois da execução do processo Aplicar Objetos. Se o número de registros com erro estiver abaixo de determinado limite (e a tarefa em batch de monitoramento do conjunto de dados for enviada para executar os algoritmos de monitoramento), o sistema fará automaticamente a transição do conjunto de dados para Aplicar Transações. Se a tarefa em batch de monitoramento não for executada ou se o número de objetos com erro exceder determinado limite, um usuário deverá decidir após verificar os erros na zona Objetos com Erro no portal Importação de Conjunto de Dados de Migração.
-
Se os erros parecerem estar relacionados a dependência, o usuário poderá decidir deixar "transações se aplicam aos objetos" e mudar o conjunto de dados para Aplicar Transações, descrito acima.
-
Se os erros parecerem relacionados a um problema externo que possa ser resolvido manualmente, o usuário poderá escolher resolver o problema e refazer a etapa Aplicar Objetos.
-
O usuário também pode decidir rejeitar um ou mais objetos para removê-los da migração.
Depois da etapa Aplicar Transações, se ainda houver erros, um usuário deverá revisar os registros e definir como proceder. Os erros estão visíveis na zona Transações com Erro no portal Importação do Conjunto de Dados de Migração.
-
O usuário pode decidir rejeitar um ou mais objetos para removê-los da migração.
-
O usuário pode resolver manualmente um problema externo à migração e decidir fazer o seguinte:
-
Refazer a etapa Aplicar Objetos. Recomendado se houver um número alto de Objetos ainda com erro e não se esperar um alto número de dependências. Os benefícios de executar Aplicar Objetos em múltiplos threads garantirá que o processo seja executado de modo eficiente.
-
Refazer a etapa Aplicar Transações.
-
Já que os objetos e as transações apresentam Erro ao Aplicar, para "tentar novamente" a etapa Aplicar depois de resolver manualmente um erro, o sistema precisa mover os registros de volta para o status que os permita serem selecionados pelo processo Aplicar adequado. Para objetos de migração, os registros precisam ser movidos de volta para Aprovado. Para transações de migração, os registros precisam ser movidos de volta para Pronto para Aplicar. Os pontos a seguir descrevem a lógica de Repetir para objetos de migração.
-
Se um usuário decidir Repetir Objetos (usando um botão de ação na página Importação de Conjunto de Dados de Migração), o conjunto de dados passará para o status Repetir Objetos. Nesse momento, deve ser executado o monitoramento de Objeto de Migração.
-
O monitoramento no status Erro ao Aplicar para os objetos detecta que o conjunto de dados está no status Repetir Objetos e dispara a transição de volta para Aprovado.
-
A etapa seguinte é fazer a transição do conjunto de dados de Repetir Objetos para Aplicar Objetos. Isso pode ser feito manualmente ou executando o processo de monitoramento Importação do Conjunto de Dados de Migração.
-
Agora os objetos podem ser selecionados pelo processo Aplicar no nível do objeto.
Uma lógica análoga existe para as transações de migração.
-
Se um usuário decidir Repetir Transações (usando um botão de ação na página Importação de Conjunto de Dados de Migração), o conjunto de dados passará para o status Repetir Transações. Nesse momento, deve ser executado o monitoramento de Transação de Migração.
-
O monitoramento no status Erro ao Aplicar para as transações detecta que o conjunto de dados está no status Repetir Transações e dispara a transição de volta para Pronto para Aplicar.
-
A etapa seguinte é fazer a transição do conjunto de dados de Repetir Transações para Aplicar Transações. Isso pode ser feito manualmente ou executando o processo de monitoramento Importação do Conjunto de Dados de Migração.
-
Agora as transações podem ser selecionadas pelo processo Aplicar no nível do objeto.
A lógica de tentar novamente também pode ocorrer ao fazer a transição entre Aplicar Objetos e Aplicar Transações, dependendo de haver ou não erros. O cenário a seguir destaca esse ponto.
-
Depois da etapa Aplicar Objetos, há objetos em Erro ao Aplicar. O conjunto de dados faz a transição para Aplicar Transações e a etapa Aplicar é feita no nível da transação.
-
Depois da etapa Aplicar Transações, há transações em Erro ao Aplicar.
-
O usuário escolhe tentar aplicar objetos novamente (clicando em Repetir Objetos). As etapas delineadas acima para tentar novamente objetos são seguidas nesse momento.
-
Depois de aplicar objetos, o usuário pode escolher tentar novamente objetos (depois de resolver erros, se aplicável).
-
Em algum momento, o usuário fará a transição para Aplicar Transações novamente. Se houver transações com Erro ao Aplicar, o sistema fará automaticamente a transição do conjunto de dados para Repetir Transações e as etapas indicadas acima para repetir transações são seguidas.
Etapa Finalizar Aplicação
Depois que todos os objetos de migração para uma transação de migração estiverem em status final (Aplicado, Rejeitado ou Não é Possível Aplicar), a transação de migração passará para o status Aplicado. Depois que todas as transações de migração estiverem no status Aplicado, o registro do Conjunto de Dados de Migração passará para Concluído e a importação será concluída.