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!


terça-feira, 18 de agosto de 2020

Project Online: Erro the query string status information is missing or invalid

Olá pessoal –

Semana passada tive que ajudar um cliente na resolução de um problema bem interessante. Ao mover os projetos de uma fase para outra dentro do workflow, o seguinte erro era apresentado:


Em geral, a descrição do erro era a seguinte:

 

The query string “statusinformation” is missing or invalid.

 

Ao trabalhar para tentar encontrar a causa-raiz do problema, conseguimos perceber que o erro acontecia com alguns poucos projetos, enquanto a maioria das demais iniciativas se movia através das fases do workflow sem maiores problemas. Tínhamos então uma pista, e o próximo passo seria tentar descobrir quais as diferenças entre os projetos que apresentavam o problema para aqueles que funcionavam normalmente.

Comparando os nomes dos projetos foi possível perceber que a característica comum entre aqueles que tinham problemas estava no fato de que eles utilizavam o sinal do e comercial ( & ) no seu nome; do outro lado, todos os projetos que não estavam utilizando esse caracter funcionavam normalmente:


A partir daí foi possível descobrir que, por algum motivo interno, o SharePoint Designer não aceita a utilização de caracteres especiais na ação Definir o status atual do estágio. Dentro do workflow que havia sido criado, em cada estágio havia uma ação para definir o status do estágio atual, e as ações estavam configuradas para sempre capturar o nome do projeto utilizado no contexto do fluxo:


Ao verificar as características da mensagem sendo capturada na área de Status Information (justamente o local sinalizado com a descrição do erro) foi possível identificar que a propriedade nome do projeto estava sendo capturada e utilizada:


Uma vez que a propriedade [%Project Data:Project Name%] foi removida, o workflow passou a funcionar corretamente – e os projetos que utilizavam o & puderam continuar a ser criados normalmente.

É estranho e totalmente inesperado encontrar esse tipo de incompatibilidade no SharePoint / Project Online, mas ao menos é algo bastante fácil de resolver.

Espero que ajude!