segunda-feira, 17 de abril de 2023

Integração entre o Project Online e Azure DevOps


 Olá pessoal –

Há um certo tempo eu e meu amigo André Xavier entregamos uma palestra no evento Global Microsoft 365 Developer Bootcamp, e mesmo passados quase 3 anos do evento ainda hoje tenho desenvolvido soluções, através do Power Automate, que permitam a integração e a troca de informações entre o Project Online e o Azure DevOps.

Pretendo retomar esse assunto aqui no blog para compartilhar, com um pouco mais de detalhes, as lições aprendidas que venho coletando ao longo desse tempo a respeito da integração entre essas duas plataformas.

É tudo uma questão de processos

Antes de qualquer coisa, se você pretende iniciar um projeto que tenha como objetivo integrar essas duas plataformas, foque inteiramente no processo. Conversar e obter a maior quantidade possível de informações com os principais interessados na integração é fundamental para que, tecnicamente, a solução seja desenvolvida com sucesso. Procure entender aspectos como:

  • Quais times serão beneficiados (ou afetados) com a sincronização? É importante entender quem são os principais interessados pelo processo de integração, e como eles serão beneficiados/afetados. Não é incomum que, dentro de uma organização, diferentes times utilizem o Azure DevOps de diferentes maneiras, de modo que tentar criar um processo de integração único se torne complexo e problemático. Caso você tenha que suportar diferentes times, com diferentes metodologias e processos, talvez o melhor caminho seja construir uma integração individual para cada um dos times.
  • Qual o caminho a ser percorrido pelos dados? É preciso determinar se as informações serão coletadas no Azure DevOps para então alimentar o Project Online, ou se o caminho a ser percorrido será no sentido contrário. Ou, caso o processo desejado seja ainda mais complexo, pode ser que exista a necessidade de comunicação em duas vias, onde os dois sistemas trocarão informações entre si.
  • Quais informações serão coletadas e processadas na automação? O Azure DevOps permite que as equipes estruturem seu trabalho utilizando os mais variados componentes, como Bugs, Epics, Features, User Story e Tasks. Procure entender como esses componentes estão estruturados na sua organização (ou no seu cliente), e quais deles participarão de fato da integração. Além disso, para cada um dos componentes que eventualmente tenham de fazer parte do processo de integração, entenda quais atributos devem ser sincronizados (Trabalho Real/Restante, datas de Início e/ou Término, etc).
  • Qual será a periodicidade de sincronização? Lembre-se que, para editar um projeto no Project Online, é preciso efetuar o seu check-out... nesse contexto, um processo de sincronização que esteja configurado para ser executado muitas vezes ao longo do dia pode se tornar um pesadelo para os gerentes de projeto, uma vez que seus projetos podem ficar indisponíveis em diferentes momentos do dia, em decorrência do processo de automação. Uma recomendação é estabelecer uma periodicidade semanal (programada para acontecer no final de semana).

Crie campos personalizados

Uma vez que o roadmap do processo de sincronização tenha sido definido, o passo seguinte será criar os campos (colunas) personalizados para capturar os principais atributos que irão permitir a comunicação entre as duas plataformas – campos a serem criados tanto no Project Online quanto no Azure DevOps. A princípio, você deve pensar nos seguintes campos/colunas:

É claro que podem haver outros campos/colunas personalizadas que tenham de ser criadas nas plataformas, a depender de quais informações seja necessário coletar.

No azure devops, crie uma consulta robusta e confiável

Caso a necessidade da sua organização (cliente) seja a de sincronizar informações do Azure DevOps para o Project Online (trata-se da grande maioria dos casos), então você deve criar uma consulta extremamente robusta e confiável (no Azure DevOps).

Para melhor esclarecer o parágrafo anterior, é preciso entender que o processo de automação que é iniciado a partir do Azure DevOps precisa ser baseado em uma consulta – uma das primeiras ações do Power Automate é obter os resultados de uma consulta específica criada no ADO. Nesse sentido, ao configurar a consulta, é preciso garantir que seus parâmetros estejam muito bem definidos, afim de que apenas os dados necessário sejam submetidos à sincronização.

Uma consulta robusta e confiável também deve incluir parâmetros de governança e conformidade, evitando que dados contraditórios sejam trazidos ao processamento. Alguns exemplos:

  • Caso a sua organização (cliente) tenha a intenção de processar apenas o componente Tasks, configure a sua consulta para filtrar especificamente este item, deixando todos os demais de fora.
  • De modo geral, no Azure DevOps os usuários não tem a obrigatoriedade de preencher certas informações – como datas de início e término. Ao tentar sincronizar datas não preenchidas (em branco) com o Project Online o processo de automação gerará erros, e dessa forma é preciso configurar a consulta para que ela exclua do processamento tarefas que não possuam todas as informações a serem sincronizadas.
  • Da mesma maneira, o Azure DevOps permite que inconsistências sejam inseridas no âmbito de um componente – por exemplo, um usuário pode inserir uma data de término anterior à data de início. Como o Project Online jamais aceitará que uma tarefa tenha sua data de término definida para antes do seu início, é preciso configurar a consulta para excluir esse tipo de inconsistência.

Lembre-se de que é preciso rever os requisitos de negócio de maneira bem detalhada e meticulosa, para que seja possível identificar os possíveis erros que podem evetualmente acontecer no momento da sincronização, garantindo que eles sejam tratados pela consulta.

Tratamento de erros

Esteja preparado para aplicar o devido tratamento de erros ao processo de automação. Alguns dos erros mais comuns são:

  • Projetos em estado de check-out no momento da execução da automação
  • Tarefas (ou componentes) que fazem parte do processo de automação e que tenham sido eventualmente excluídas do cronograma (ou do board do Azure DevOps)
  • Tarefas com caracteres especiais nos seus nomes (! $ # * & ’ @ etc.)

...............................................

Bem, por hoje era isso. O objetivo era realmente trazer algo mais genérico a respeito do processo de automação, seus eventuais problemas e desafios – e não algo técnico que fosse descrever detalhadamente como estruturar toda a integração.

Se você ainda precisa de alguma ajuda fazer a sincronização funcionar aí na sua empresa, é só entrar em contato 😉.