terça-feira, 6 de abril de 2021

Filtrando as tarefas de um projeto via Power Automate

 Olá pessoal –

No final de Março/2021 publiquei um post para explicar como é possível filtrar um projeto pelo seu ID no Power Automate. Logo depois de efetuar a publicação do post surgiu uma nova necessidade com um dos clientes com os quais eu trabalho, que acho que vale a pena compartilhar por aqui. Vou procurar explicar com um pouco mais de detalhes:

--- um cliente gostaria que, logo após a criação de um novo projeto, seus marcos fossem obtidos e sincronizados com um sistema externo, que era utilizado por uma área específica da organização para fins de controle.

É importante destacar que nesse post não pretendo explicar como os dados exportados foram adicionados ao sistema externo. Ao invés disso, meu objetivo aqui será detalhar como é possível criar uma ação no Power Automate que utilize o parâmetro do ID do projeto (GUID) para filtrar as tarefas daquele cronograma especificamente. Antes de começar, é importante apenas deixar claro que, no contexto desse cliente, todos os novos projetos criados possuíam um modelo de cronograma associado, ou seja, quando da criação de um novo projeto toda a estrutura básica de tarefas já estaria pronta. Feitos os devidos disclaimers, vamos lá.

O primeiro passo é iniciar o gatilho do flow usando a opção ‘When a new project is created’. Em seguida, paralisamos o fluxo por 2 minutos para garantir que todas as ações de criação do projeto tenham sido processadas pela fila do Project Online. Por fim, uma ação ‘Send an HTTP request to SharePoint’ foi adicionada para que seja possível obter a lista de tarefas:


Após especificar o endereço do PWA e manter o método padrão GET, é preciso determinar que as tarefas a serem obtidas devem ser oriundas do projeto que acabou de ser criado. Se você já está familiarizado com as strings para obter dados da API do Project Online (OData), já deve saber que o ponto final da entidade tarefas pode ser consultado da seguinte maneira (neste exemplo estamos filtrando os marcos do cronograma e obtendo o seu ID, nome e data de término):

/_api/ProjectData/Tasks()?$Select=TaskId,TaskName,TaskFinishDate&$Filter=TaskIsMilestone eq true

Porém, como filtrar as tarefas para que sejam apenas obtidas as tarefas do projeto criado? A resposta é que a API OData é flexível o suficiente para permitir a inclusão de um parâmetro adicional (Projects), que permite a aplicação do filtro desejado. Ficaria assim:

/_api/ProjectData/Projects(guid'[ProjectId] ')/Tasks()?$Select=TaskId,TaskName,TaskFinishDate&$Filter=TaskIsMilestone eq true


Aplicando esta técnica apenas as tarefas necessárias do projeto em vigor serão obtidas, e assim será possível prosseguir com as ações futuras de acordo com as necessidades de negócio.

Espero que ajude e até a próxima 😉.



sexta-feira, 2 de abril de 2021

Reimagine Project Management with Microsoft

 


Olá pessoal –

Passando hoje rapidamente para falar sobre um evento virtual muito importante para a turma que está pensando em adotar o Project for the web (ou para aqueles que já estão em processo de adoção). Nesse mês de Março/2021 a Microsoft disponibilizou as palestras que foram gravadas durante o evento Reimagine Project Management with Microsoft, um evento realizado pelo time de produto e engenheiros que trabalham ativamente no desenvolvimento do Project for the web, discutindo as funcionalidades, recursos e roadmap dessa importante plataforma de gerenciamento de projetos.

A inscrição para o evento é gratuita e pode ser feita no link abaixo:

https://events1.social27.com/reimagine-projectmanagement/page/pre-signup

Só pra vocês terem uma ideia da montanha de conteúdo disponível:


Agora é bloquear a agenda e dar no play 📺


segunda-feira, 29 de março de 2021

Como filtrar projetos pelo ID no Power Automate?

 Olá pessoal –

Conforme eu venho falando há bastante tempo aqui no blog, tenho procurado manter uma longa lista de recursos, funcionalidades e soluções para ajudar os usuários do Project Online na automação de seus processos de gerenciamento de projetos via Power Automate. No post de hoje vou comentar sobre como podemos filtrar um determinado projeto pelo seu ID na ação ‘Send an HTTP request to SharePoint’.  

Uns dias atrás, um cliente precisava realizar uma ação aparentemente simples: quando um novo projeto fosse criado no Project Online, o Power Automate deveria ir até o site de projetos que nasceu junto do projeto e realizar algumas mudanças nos títulos de algumas pastas padrão na biblioteca de documentos compartilhados. O problema é que ele não estava conseguindo filtrar o projeto através do seu ID, usando como parâmetro o gatilho que dispara o flow. Vamos dar uma olhada no flow original que estava sendo criado:


A lógica utilizada era simples:

  1. O gatilho seria disparado com a criação de um novo projeto no Project Online
  2. Em seguida, uma ação de ‘Delay’ foi incluída para paralizar o flow por 5 minutos – o objetivo era dar tempo ao Project Online para que fosse capaz de processar todos os trabalhos relacionados com a criação do novo projeto
  3. Por fim, a instrução era passada à ação ‘Send an HTTP request to SharePoint’ para filtrar o projeto que acabara de ser criado, usando como critério de filtro a coluna ‘Project Id’

E por que o flow não funciona? Bem, enquanto os filtros para a API do Project Online funcionam muito bem quando estamos utilizando termos comuns (por exemplo, poderíamos filtrar pela propriedade ‘ProjectName’ aplicando um filtro simples como ....Projects()?Filter=ProjectName eq 'Implantação do PMO ') infelizmente o mesmo cenário não se aplica quando o campo Project ID está sendo utilizado como parâmetro de filtro. Como o Project Id é um campo interno de identificação única dos projetos, utilizado como chave primária pelo banco de dados do Project Online, ele precisa ser filtrado incluindo o termo GUID (Global Unique Identifier) como prefixo. Dessa maneira, ao invés de utilizar o filtro ....Projects()?Filter=ProjectId eq '[Project Id]', o correto seria configurar o filtro dessa maneira: ....Projects()?Filter=ProjectId eq guid'[Project Id]'


Assim passamos os parâmetros corretos para a string e conseguimos obter as informações necessárias para dar continuidade ao flow.

Espero que ajude 😉.

quarta-feira, 20 de janeiro de 2021

Como escolher o tipo de projeto no Power Automate

 Olá pessoal –

Feliz 2021, e que esse seja um ano repleto de realizações e prosperidade – sempre com muita saúde!

No último ano trabalhei em inúmeros projetos de automatização do Project Online com o apoio do Power Automate, os quais tenho procurado documentar aqui no blog e também no meu canal do YouTube.

Em um dos vídeos postados iniciei uma discussão sobre as opções para criação de novos projetos através da integração entre uma lista do SharePoint e o Project Online. Gentilmente, o usuário Messias Reis postou uma dúvida muito interessante na seção de comentários:


Respondendo à pergunta do Messias, sim, é possível escolher o tipo de projeto que se deseja criar – e esse será o objetivo deste post.

Obtendo os ids dos tipos de projeto

No Microsoft Project Online é possível criar diferentes Tipos de Projeto da Empresa (EPTs) para mapear os processos de gestão e também o ciclo de vida dos projetos corporativos. Ao navegar no ambiente, os usuários podem visualizar e selecionar o EPT desejado para iniciar um novo projeto:


Quando o usuário seleciona um tipo de projeto, o sistema irá direcioná-lo para a URL que especifica o ID interno do EPT escolhido:


A título de exemplo, abaixo está a URL interna do meu ambiente para o EPT ‘Application Development’:

https://m365x353811.sharepoint.com/sites/pwa/_layouts/15/PWA/Wizards/CreateProject.aspx?src=RibbonNewProject#{"stage":1,"eptUid":"6cc4465b-b347-e711-80d1-00155d3c3c16"}

Aqui a lista contendo os IDs internos de todos os tipos de projeto cadastrados no meu ambiente:


Criando o flow

De posse da lista de IDs internos é possível construir o flow no Power Automate. De maneira resumida, você terá de determinar quais serão os parâmetros e as ações que serão realizadas para capturar as ideias dentro da sua organização. O output desse processo será então utilizado pelo Power Automate para criar o novo projeto no Project Online – conforme exemplo discutido no vídeo utilizado como referência nesse post.

Indo direto ao ponto, após capturar o nome que será dado ao novo projeto, você terá de iniciar a ação Send an HTTP Request to SharePoint, combinando o método POST com a URI irá criar o novo projeto (/_api/ProjectServer/Projects/Add). Em seguida, no corpo da instrução, você precisará determinar o nome do projeto e também especificar o ID do tipo de projeto que deverá ser utilizado:


Vale lembrar que você deverá substituir o trecho <inserir o nome do projeto> pelo output obtido nas ações anteriores.


Neste exemplo estou utilizando um EPT fixo para criar o novo projeto (mas também é possível utilizar um EPT dinâmico se o processo assim exigir). Como resultado, todas as vezes em que o flow for acionado, os novos projetos serão criados utilizando o EPT escolhido:


Espero que ajude


terça-feira, 5 de janeiro de 2021

Arquivando projetos no Project Online

 Olá pessoal –

Feliz 2021, e que esse seja um ano repleto de realizações e prosperidade – sempre com muita saúde!

Com a chegada de um novo ano, é comum que alguns projetos cheguem ao fim, e com isso algumas ações devem ser realizadas pelos gerentes de projeto para garantir que seus cronogramas sejam arquivados de maneira correta. Apesar de essas ações serem altamente recomendadas, infelizmente ainda é muito baixo o número de organizações que tenham implementado processos claros e definidos para o encerramento de projetos no Project Online.

Os 7 passos para o arquivamento de projetos

Passo #1: garantir que todas as tarefas do cronograma estejam definidas como 100%

Pode até soar óbvio, mas a primeira coisa que os gerentes de projeto precisam fazer quando seus projetos se encerram é garantir que todas as tarefas do cronograma sejam marcadas como 100% concluídas. Não é incomum que projetos concluídos apareçam em relatórios como 97%, 98% ou mesmo 99% concluídos... tal situação se deve ao fato de que pode haver tarefas que não foram necessárias; ou tarefas que foram finalizadas com menos esforço do que o planejado, deixando algum trabalho restante; ou então marcos, que precisam ser definidos como 100% concluídos de maneira manual.


Passo #2: atualizar a Data de Status

Há um tempinho eu escrevi aqui no blog sobre a importância de manter a Data de Status sempre atualizada – e essa afirmação ainda é verdadeira quando do encerramento de um projeto. Uma data de status atualizada ajudará na identificação de eventuais desconformidades no cronograma, como tarefas não marcadas como concluídas.

Passo #3: bloquear as tarefas

O Project Online possui um campo de tarefa chamado Bloqueada, que quando marcado com a opção “Sim” irá restringir os usuários de registrar esforço na tarefa. Em outras palavras, quando o cronograma for publicado nenhum progresso adicional poderá ser adicionado às tarefas em que o campo bloqueada estiver ativado. Os gerentes de projeto deverão adicionar a coluna Bloqueada e então marcar todas as tarefas com a opção sim:


Passo #4: modificar a opção de publicação das tarefas

O Project Online possui um campo de tarefa chamado Publicar, que é responsável pela exibição ou não exibição das atribuições nas páginas de tarefas dos recursos, assim como nos quadros de horário e modos de exibição de atribuições no PWA. Quando definido como não, os recursos não mais terão visibilidade das atribuições das tarefas nas suas páginas no PWA – e sendo assim, os gerentes de projeto deverão adicionar a coluna Publicar e então marcar todas as tarefas com a opção não:


Passo #5: modificar o tipo de reserva dos recursos

O campo Tipo de Reserva é utilizado pelo Project Online para determinar se a utilização de um determinado recurso em um projeto está confirmada ou proposta. Ao finalizar um projeto, os gerentes de projeto devem alterar os tipos de reserva dos recursos de Comprometida para Proposta, para que as atribuições sejam removidas dos modos de exibição de capacidade na Central de Recursos:


Passo #6: definir os valores dos campos personalizados ou mover o projeto no workflow

Se a sua organização utiliza workflows para gerenciar o ciclo de vida dos projetos, então os gerentes de projeto deverão mover o projeto para o respectivo estágio (fase) de encerramento, para que as devidas revisões/aprovações sejam realizadas. Caso o controle do status dos projetos seja realizado através de um campo personalizado (Status do Projeto, por exemplo) então o status deverá ser definido manualmente pare que represente a situação atual do projeto.

Passo #7: publicar o projeto

Por fim, para garantir que todas as ações tomem efeito, o projeto deverá ser publicado para que todas as atualizações sejam comunicadas à plataforma

Passo extra: arquivando o site de projeto

Caso sua organização utilize os sites de projeto para armazenar artefatos relacionados ao ciclo de vida do projeto (como documentos, riscos, problemas, entregas, mudanças entre outros) também é possível arquivar o site de projeto. Para isso, a recomendação é alterar as permissões do site, concedendo permissões únicas para os membros de equipe de modo a modificar o nível de acesso para apenas leitura nas bibliotecas e listas existentes, garantindo assim que não haja alterações nos itens existentes, assim como bloqueando a criação de novos itens.

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

Pois é pessoal, por hoje é isso! Agora é a sua vez de botar a mão na massa e garantir que os projetos estão sendo arquivados adequadamente na sua organização!

Espero que ajude 😉