quarta-feira, 26 de agosto de 2020

Atualizando campos nativos no Project Online via Power Automate

 Olá pessoal –

No meu canal no YouTube tenho procurado explorar diferentes cenários de integração do Power Automate com o Project Online, com o objetivo de otimizar e automatizar alguns processos de gerenciamento de projetos que são executados no contexto da solução PPM da Microsoft. É importante lembrar que aqui no blog também há vários posts que complementam os vídeos.

Com base no aprendizado que venho obtendo ao explorar cada um dos cenários, e depois de bater muito a cabeça para descobrir como as coisas se encaixam, resolvi publicar aqui no blog algumas das lições aprendidas durante a jornada, para que fique registrado (caso eu precise pesquisar novamente no futuro 😊) e também para ajudar alguém que eventualmente precise fazer algo parecido.

Nesse sentido pretendo publicar, ao longo das próximas semanas, uma série de posts que contemplem diferentes formas de integração entre o Power Automate e o Project Online.

Atualizando campos nativos: nome do projeto

O primeiro post dessa sequência irá explorar como atualizar campos nativos do Project Online com o Power Automate – no exemplo de hoje iremos atualizar o campo Nome do Projeto. O cenário proposto é o seguinte (inclusive há um vídeo no meu canal no YouTube falando sobre algo muito parecido):

  • Uma determinada empresa possui códigos internos para os projetos, que são gerados no SAP (mas que poderiam ser gerados em qualquer outro sistema)

  • Uma vez gerados os códigos internos, esses são enviados para uma lista do SharePoint

  • Quando um novo projeto for criado no Project Online, o Power Automate deverá pesquisar por esse projeto na lista do SharePoint, para então atualizar o nome do projeto adicionando o número SAP como prefixo (ou seja, combinando o número SAP com o nome com o qual o projeto foi originalmente cadastrado).

É importante ressaltar que esse é um exemplo baseado em um cenário hipotético, com fins meramente ilustrativos. O ideal é que você possa absorver os conceitos e então aplicá-los, ajustando-os conforme as necessidades específicas.

Abaixo um exemplo do flow que foi criado no Power Automate, contendo todas as principais ações:


Em resumo, temos:

1. O gatilho utilizado foi ‘When a new project is created’’. Em seguida estou usando uma ação ‘Delay until’ para pausar o flow por alguns minutos. Como esse é um exemplo para fins didáticos, podemos dizer que é ok, mas é evidente que não poderia ser aplicado em um ambiente produtivo. No mundo real, o mais adequado seria aguardar até que o check-in do projeto fosse efetuado, para termos a garantia de que o criador do projeto preencheu todos os campos e saiu efetivamente do projeto, liberando-o para ser modificado pelo flow

2. Na ação seguinte estou obtendo a lista de projetos cadastrados na lista do SharePoint, filtrando o título dos itens para obter apenas o registro que seja igual ao projeto que acabou de ser criado no Project Online


3. Então, para cada item encontrado na lista do SharePoint, teremos de efetuar o check-out do projeto. Vale reiterar, uma vez mais, que como esse exemplo trata apenas de fins didáticos, estou pulando algumas etapas. Mas se fóssemos considerar o mundo real seria preciso validar se o projeto encontra-se em check-in antes de prosseguir com a ação de efetuar o check-out

4. Daí é que vem o pulo do gato: para atualizar um campo nativo do Project Online (nesse caso, o campo Nome do Projeto), precisaremos fazer uma requisição HTTPS para o SharePoint (falei sobre isso aqui e aqui). Ao fazer a requisição, o método a ser utilizado é o PATCH, onde a variável [ProjectId] é fornecida para que o Power Automate tenha condições de encontrar o projeto correto e realizar sua atualização


Caso você queira aprender mais sobre requisições HTTPS no Project Online, poderá consultar esse link.

Abaixo as intruções completas que foram utilizadas no processo de atualização:

……………………………………………………………………….

Site Address: Utilize a URL do seu PWA

Method: PATCH

Uri: /_api/ProjectServer/Projects(' <Id do projeto> ')/Draft/

Headers:

Content-Type | application/json;odata=nometadata

IF-MATCH | *

Accept | application/json;odata=nometadata

Body:

{

"Name":" <campo da lista do SharePoint> - <nome do projeto> "

}

……………………………………………………………………….

Lembrando que os items destacados em amarelo são os campos obtidos nas ações anteriores do flow.

Por fim, a última ação deverá publicar o projeto e efetuar o check-in, para garantir que todas as atualizações ocorram de maneira adequada.

Espero que ajude!


2 comentários:

  1. Raphael, tem alguma ideia de como eu atualizo campos de Read Only? Pelo método que você utiliza somente alguns campos podem ser alterados, só que caso eu queria atualizar, por exemplo, a duração restante e a real, eu não consigo. Existe alguma maneira de "forçar" a atualização desses campos de Read Only através do automate?

    ResponderExcluir