Detalhes importantes na configuração para sistemas parceiros no EBS

Networking

Nesse post falarei sobre uma experiência que tive em um projeto de R12 no ano passado (2013).

Em um certo momento do projeto a equipe responsável por um dos sistemas parceiros começou a realizar testes de interface, onde seria feita a comunicação desse sistema com os módulos do EBS. Mas um problema estava acontecendo, nada do EBS chegava nesse sistema.

Os consultores funcionais do EBS foram chamados para ajudar a entender o que estava acontecendo. Verifica profile aqui, value set lá… E até então estava tudo certo. Geralmente nesse ponto começa aquele empurra-empurra de responsabilidades como acontece na maioria dos projetos.

Os funcionais me pediram ajuda e eu comecei a analisar o problema. Comecei a depurar o código para tentar descobrir em que momento acontecia o problema. Depois de um tempo fuçando verifiquei que os erros estavam ocorrendo em algumas triggers. Essas triggers estavam em algumas tabelas importantes dos principais módulos que trocam dados com os sistemas parceiros. O que ocorria era que quando uma determinada profile estava setada como “Yes”, a trigger executava um bloco de código que gerava a exceção. A exceção em questão era que aquele código estava tentando efetuar um “ROLLBACK”, recurso que não é permitido dentro de triggers. Como a trigger era core, eu não poderia simplesmente alterar e colocar pra funcionar. Então expliquei o problema e foi aberto um chamado.

A Oracle mandou um patch, o ATG aplicou e começaram a testar novamente. Resolveu? Não! Agora o que acontecia era que nenhum erro aparecia mas também a interface não funcionava.

Resolvi dar uma olhada novamente nas triggers e analisei o que o patch tinha feito, infelizmente não resolvia o problema ainda.

O negócio começou a ficar feio, o tempo passando e nada de interface funcionando. Nessa altura toda a equipe já estava sabendo e tentando ajudar.

Então eu e mais dois funcionais fomos para uma sala reservada para tentar descobrir o problema. Trocamos informações e então eu comecei a pesquisar na Internet, ler a documentação, manuais, MOS, etc. Primeiramente descobri que a profile que era verificada na trigger era a que controlava se os dados entre o EBS e os sistemas parceiros deveriam ser trocados ou não:

OKL: Ativar Eventos de Negócios para ISV (Em português)
CLL_F255: Enable Business Events for ISV (Em inglês)

Quando essa profile estava como “No” não dava erro porque na trigger o código problemático só era executado se ela estivesse como “Yes”. Então uma coisa era certa, ela tinha que estar “Yes” de qualquer jeito para a interface funcionar. Então comecei a fuçar mais para tentar descobrir o que estava gerando a exceção, até que cheguei na lookup CLL_F255_ISV_EVENTS:

Lookup: CLL_F255_ISV_EVENTS
Lookup: CLL_F255_ISV_EVENTS

Eram dois problemas:

  1. O conteúdo no campo Etiqueta para “GESPLAN” deveria estar nulo (Na imagem acima já estava corrigido). Pelo que entendi, devem existir mais de um tipo de mecanismo de integração (BPEL, DBLINK, etc). Como no cliente em questão não era utilizado BPEL, isso gerava uma exceção e interrompia todo o processo.
  2. O outro problema era no conteúdo do campo Significado para o registro do Synchro, que também gerava exceção. (Para o parceiro Synchro no cliente em questão, era correto utilizar “BPEL” no campo Etiqueta). Mas olhando o conteúdo do campo Significado, parecia estar tudo OK, batia com o que estava no manual. O que poderia estar errado? Aí que me veio uma “luz” e resolvi olhar como estava o conteúdo em outros idiomas:
    Na imagem acima está correto, os dois textos estão iguais. Mas quando abri essa tela com as traduções, eles estavam diferentes.Como é o conteúdo do campo Significado que é utilizado no código, ele precisa estar igual em todos os idiomas utilizados pelo cliente.

Acertados esses pontos, tudo passou a funcionar.

Toda essa configuração faz parte do novo mecanismo utilizado na R12 para integração com os parceiros: ISV Integration Solution

Uma tabela que pode ser útil para analisar os processos é: CLL_F255_NOTIFICATIONS

Mais detalhes no note abaixo:

LAD Add-on Localizations – R12.1 ISV Integration Solution (Doc ID 960846.1)

O post ficou grande, tentei detalhar o máximo possível com o mínimo de texto. O intuito aqui não é apontar o dedo pra ninguém e sim deixar registrado tudo o que passamos para que no futuro outras pessoas possam evitar essa dor de cabeça. São detalhes mínimos que qualquer um pode cometer.

Quanto mais trabalharmos em equipe, mais sucesso teremos.