quinta-feira, 31 de março de 2022

Integração do Project Online com o Microsoft Teams - Adaptative Cards

 Olá pessoal –

Por aqui continuamos a todo vapor na exploração de soluções automatizadas que permitam às equipes trabalhar de maneira mais produtiva, com o objetivo de facilitar a comunicação e a colaboração, tornando o gerenciamento de projetos mais eficaz e inteligente.

Atualmente, um número muito grande de organizações utiliza o Microsoft Teams para possibilitar que as diferentes equipes de trabalho possam se comunicar e colaborar de maneira simples e eficiente, e por muitas vezes há o desejo de que tal cenário possa ser, de certa forma, estendido à gestão de projetos disponível na plataforma PPM – uma vez que os recursos e funcionalidades padrão do Teams não possuem uma integração nativa com o Project Online.

Para dar início à exploração das possibilidades de integração entre o Project Online e o Microsoft Teams, decidi começar pelos Adaptative Cards: de maneira bem resumida, eles são cartões abertos que podem ser formatados para exibir informações nos mais variados formatos, a depender das necessidades apresentadas. Para conhecer um pouco mais sobre os adaptative cards, sugiro que você dê uma olhada na galeria de exemplos e templates disponibilizada pela Microsoft. Você encontrará coisas muito legais 😎


A ideia aqui é começar pelo básico: na minha empresa fictícia foi criado um novo time no Microsoft Teams, com o objetivo de que seja utilizado pelos membros do escritório de projetos, gerentes de projetos e demais interessados para troca de informações, aconselhamento e esclarecimento de dúvidas, armazenamento dos modelos utilizados pelas equipes (documentos, planilhas, apresentações e etc.), disponibilização de processos, procedimentos e treinamentos e todos os demais aspectos e artefatos que estejam relacionados à gestão de projetos na organização.

Dessa forma, nosso objetivo será o de desenvolver um fluxo automatizado no Power Automate para que uma publicação seja feita no Microsoft Teams (através de um adaptive card) sempre que um novo projeto for criado no Project Online.

O flow

O flow é relativamente simples: assim que um novo projeto for criado, algumas informações devem ser coletadas e um novo post deve ser feito no Microsoft Teams:


Para começar, utilizei o gatilho nativo do Project Online When a new project is created. Em seguida, mais duas ações: a) iniciar uma variável para capturar a URL do ambiente do PWA; b) uma pausa de 30 segundos, para garantir que todas as informações tenham sido processadas adequadamente antes de efetivamente postar a mensagem no Teams.

Em seguida utilizei a ação Send an HTTP request to SharePoint, da qual já falei inúmeras vezes aqui no blog, para capturar as informações do projeto recém criado:


Uma vez capturadas as informações desejadas, é necessário utilizar a ação Post adaptative card in a chat or channel para passar as intruções a respeito de como o cartão deverá ser configurado:


Abaixo vou deixar a instrução completa do exemplo que utilizei para construir o meu adaptative card. Vou destacar em amarelo os itens que você precisará ajustar, de acordo com o que desejar exibir:

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

{

    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",

    "type": "AdaptiveCard",

    "version": "1.0",

    "body": [

        {

            "type": "TextBlock",

            "text": "Novo projeto: <insira o nome do projeto aqui>",

            "id": "ProjectName",

            "spacing": "Medium",

            "horizontalAlignment": "Center",

            "size": "Large",

            "weight": "Bolder",

            "color": "Accent"

        },

        {

            "type": "TextBlock",

            "text": "Um novo projeto foi criado. Abaixo você poderá visualizar os detalhes",

            "id": "Subheader",

            "separator": true

        },    

        {

            "type": "TextBlock",

            "text": "<insira o título do seu campo personalizado aqui>",

            "id": "Campo1Header",

                "weight": "Bolder",        

            "wrap": true

        },

            {

            "type": "TextBlock",

            "text": "<insira o campo desejado aqui>",

            "id": "Campo1",

            "wrap": true,

                "separator": true 

        },

            {

            "type": "TextBlock",

            "text": "<insira o título do seu campo personalizado aqui>",

            "id": "Campo2Header",

                "weight": "Bolder",        

            "wrap": true     

        },

            {

            "type": "TextBlock",

            "text": "<insira o campo desejado aqui>",

            "id": "Campo2",

            "wrap": true,

                "separator": true 

        },

            {

            "type": "TextBlock",

            "text": "<insira o título do seu campo personalizado aqui>",

            "id": "Campo3Header",

                "weight": "Bolder",

            "wrap": true

        },

            {

            "type": "TextBlock",

            "text": "<insira o campo desejado aqui>",

            "id": "Campo3",

            "wrap": true,

                "separator": true 

        },

            {

            "type": "TextBlock",

            "text": "Projeto criado por: <insira o nome do proprietário do projeto aqui>",

            "id": "CriadoPor",

            "wrap": true

        }

     ]

}

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

Assim, quando um novo projeto for criado, a postagem será feita no canal especificado no Microsoft Teams:


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

E aí, o que achou? Deixe seu feedback pra eu saber se você gosta desse tipo de conteúdo 😉

Um abraço e até o próximo post!

terça-feira, 29 de março de 2022

Como forçar o check in de projetos

 Olá pessoal –

Os leitores mais atentos desse blog já devem ter percebido que, na maioria dos cenários em que é necessário construir um processo de automação do Project Online através do Power Automate, a realização do check out dos projetos é obrigatória.

Tal obrigatoriedade é observada porque, sempre que uma interação com o Project Online tenha como objetivo editar/modificar um parâmetro (seja ele um parâmetro da entidade Projects – como por exemplo um campo personalizado; seja ele um parâmetro da entidade Tasks – como a data de término de uma tarefa do cronograma) o projeto deve primeiramente ser bloqueado para edição, impedindo que outros usuários tenham condições de manipular o objeto (projeto) ao mesmo tempo.

Porém, e se durante o processo de automação o projeto já se encontrar bloqueado por outra pessoa? O que devemos fazer caso algum gerente de projeto se esqueça de efetuar o check in do projeto ao finalizar o seu trabalho, mantendo assim o objeto bloqueado no servidor?

Faz uns 2 anos, eu fiz um vídeo com o MVP Renato Romão ensinando como obter a relação de projetos em check out no Project Online via Power Automate.


Em teoria, ao obter a relação de projetos bloqueados, alguém poderia agir de maneira proativa, seja conversando com os gestores para que efetuem o check in dos projetos, seja forçando o check in por conta própria...

Porém, para um cliente com o qual venho trabalhando atualmente, essa abordagem ainda seria insuficiente. Esse cliente roda todo sábado um processo automatizado que tem como objetivo obter informações de um sistema financeiro (ERP) para então alimentar algumas tarefas no Project Online, atualizando os custos do cronograma com base nos lançamentos realizados pelo time de controladoria. E, para garantir que o processo possa acontecer independentemente de o projeto encontrar-se em check in ou não, a decisão foi radical: no momento da execução do fluxo, caso algum projeto esteja em check out, o check in deve ser forçado para que as tarefas possam ser atualizadas corretamente.

 Para forçar o check in de um projeto no Project Online através do Power Automate, é possível utilizar a ação Send an HTTP request to SharePoint, conforme print abaixo:


A instrução Uri deverá explicitar que o check in será forçado para cada projeto encontrado em check out:

/_api/ProjectServer/Projects('<projectId>')/Draft/checkIn(true)

Lembre-se de substituir os conteúdos dinâmicos com os resultados obtidos das ações anteriores, conforme destacado acima.

Dessa forma, toda vez que o fluxo é acionado será possível garantir que todos os projetos serão atualizados, mesmo que algum gerente de projetos tenha esquecido de efetuar o check in ao finalizar a atualização do cronograma.

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

É importante destacar que você deve utilizar esse recurso apenas em casos extremos, pois ao forçar o check in de um projeto a sessão ativa será encerrada e o gerente de projetos poderá eventualmente perder todo o seu trabalho caso não o tenha salvo.

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

E por hoje é só pessoal. Espero que gostem desse post, e até o próximo!

sexta-feira, 18 de fevereiro de 2022

Adicionando membros de equipe ao projeto automaticamente

 Olá pessoal –

No Microsoft Project Online, para que os recursos corporativos tenham condições de acessar os sites de projeto para colaborar através da criação e do gerenciamento de riscos, problemas, documentos, entre outros artefatos, eles precisam obrigatoriamente fazer parte da equipe do projeto.

Recentemente um cliente entrou em contato pois tinha um requisito de negócio importante: o processo de adição dos membros de equipe a um projeto recém criado deveria acontecer de maneira automatizada. Nessa organização, quando um novo projeto é criado, todos os colaboradores devem ganhar acesso ao site de projeto imediatamente, e o fato de os gerentes de projeto terem que adicioná-los manualmente estava causando muitos problemas – pois infelizmente nem todas as pessoas seguem os processos.

Para facilitar a vida dos gerentes de projeto e garantir o cumprimento dos requisitos de negócio, mais uma vez, o Power Automate foi utilizado para automatização dos processos. Nesse post vou detalhar o passo-a-passo caso você precise fazer algo parecido na sua empresa 😉.

Nota: é muito importante ressaltar que, sem a colaboração do meu grande amigo Alisson Scalco, este problema não teria sido resolvido. Então, fica aqui o meu agradecimento público a este grande profissional.

O flow

O gatilho When a new project is created (V2) foi utilizado para determinar quando o flow deve ser iniciado:


Na propriedade Select Query desse gatilho apenas duas colunas foram selecionadas para melhorar a eficiência do flow – são elas ProjectId e ProjectName:


Uma vez disparado o gatilho, foi necessário paralizar o flow por um certo tempo, pois as próximas ações não podem ocorrer imediatamente após a criação do projeto. Essa pausa precisa ser adicionada pois o gerente de projetos pode ainda estar trabalhando com o projeto (ou seja, o projeto pode estar em check-out) ao mesmo tempo em que o Power Automate tenta executar as ações do flow. É difícil determinar com precisão por quanto tempo o flow deve ser paralisado, pois não sabemos exatamente quando o gerente de projetos finalizará suas ações, mas uma boa alternativa é calcular um intervalo até que se atinja um horário fora do expediente de trabalho (por exemplo, até às 22 horas), onde se espera que o gerente de projetos não mais esteja trabalhando com o projeto em questão – e assim, espera-se, o projeto não mais esteja em check-out.

Após configurar a pausa, a próxima ação irá listar o projeto para que seja possível trabalhar com as suas propriedades:


Em seguida é preciso adicionar uma condição para verificar se o projeto está em check-out. Caso a condição seja verdadeira, é possível enviar um e-mail à equipe de PMO ou ao gerente de projetos para informar que não foi possível adicionar os membros de equipe automaticamente:


Entretanto, caso a condição seja falsa (ou seja, o projeto não encontra-se em check-out), será possível prosseguir e adicionar os membros de equipe ao projeto. A primeira coisa a se fazer é efetivamente colocar o projeto em check-out:


Em seguida, será preciso listar todos os recursos ativos da organização para que seja possível adicioná-los como membros de equipe ao projeto. Para listar os recursos adequadamente, foi utilizada a ação Send an HTTP Request to SharePoint, que neste exemplo foi renomeada para ‘Get Resources’ (para saber mais sobre esta ação, veja este link). Perceba que a instrução definida na ação está obtendo a lista de recursos ativos do Project Online, desde que não sejam recursos genéricos:


Aqui a instrução completa:

/_api/ProjectData/[en-us]/Resources()?$Select=ResourceId&$Filter= TypeName eq 'Work Resource' and ResourceIsActive eq true and ResourceIsGeneric eq false

Como a ação ‘Get Resources’ irá trazer a lista de todos os recursos ativos do Project Online, e como cada um deles terá de ser adicionado como membro de equipe no projeto, é necessário utilizar a ação Apply to each para especificar que esta ação deve ser aplicada a todos os registros obtidos (para saber mais sobre esta ação, veja este link). Dentro da ação ‘Apply to each’ é possível utilizar uma expressão para especificar o resultado que deve ser utilizado como entrada:


body('Get_Resources')?['value']

Dessa maneira será possível utilizar mais uma vez a ação Send an HTTP Request to SharePoint para adicionar os recursos como membros de equipe do projeto (perceba que a ação foi renomeada para ‘Add Resources’):


/_api/ProjectServer/Projects('<projectId>')/Draft/ProjectResources/AddEnterpriseResourceById('<enterpriseResourceId>')

Lembre-se de substituir os conteúdos dinâmicos com os resultados obtidos das ações anteriores, conforme destacado acima.

Como ação final, bastará publicar o projeto ao final do loop de adição de recursos para garantir que eles sejam devidamente sincronizados com o site de projeto:


Quando um novo projeto for criado, o flow será disparado, e como consequência os membros de equipe serão devidamente adicionados ao projeto:



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

Como mencionado no início do post, fica aqui minha nota de agradecimento ao Alisson Scalco pela sua fundamental colaboração nesse post. Valeu demais, Alisson!

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

E por hoje é só pessoal. Espero que gostem desse post, e até o próximo!

sábado, 29 de janeiro de 2022

Caminho crítico no Project for the web

 Olá pessoal –

A habilidade de identificar o caminho crítico de um projeto é de fundamental importância para os gerentes de projeto, uma vez que irá auxiliá-los no entendimento e na identificação das tarefas com potencial para afetar negativamente a data final de um projeto.

Apesar de este ser um tópico bastante estudado e presente no dia-a-dia dos gerentes de projeto que utilizam o Microsoft Project Desktop, o Project for the web ainda não dispunha dessa funcionalidade. A boa notícia é que a Microsoft recentemente introduziu um novo esquema de filtros nas visões de Tabela e de Linha do tempo que permitem aos gerentes de projeto a rápida identificação das tarefas que fazem parte do caminho crítico do cronograma.

Se você consegue se virar bem em inglês, um artigo escrito no longínquo ano de 1963 e disponibilizado pela revista Harvard Business Review esmiuça os métodos para cálculo do caminho crítico em um riquíssimo nível de detalhes – vale muito a pena a leitura.

Filtrando as tarefas críticas na visão tabela

Para filtrar as tarefas críticas do cronograma na visão Tabela, acesse o projeto e clique na opção Filtros:


Em seguida, dentre as opções apresentadas, você poderá expandir e então filtrar as tarefas críticas do cronograma:


Como resultado, o Project for the web irá exibir apenas as tarefas com potencial de impactar a data final do projeto:


Destacando as tarefas críticas na visão linha do tempo

Já na visão de Linha do tempo, as tarefas críticas podem ser filtradas ou apenas destacadas, de acordo com a preferência e necessidade do usuário. Ao clicar na opção Filtros, você terá a opção de ativar a funcionalidade que irá destacar as tarefas críticas:


Como resultado, todas as tarefas que fazem parte do caminho crítico serão devidamente marcadas com as barras vermelhas ao redor da barra tradicional do Gráfico de Gantt:


Considerações finais

É importante ressaltar que a visualização das tarefas que fazem parte do caminho crítico no Project for the web é algo que está diretamente relacionado a maneira como o cronograma foi desenvolvido e organizado pelo gerente do projeto. Em cronogramas não muito bem elaborados, tarefas que não seriam críticas podem eventualmente ser listadas como tal, ao ponto que tarefas importantes e que deveriam estar no caminho crítico podem não ser assim identificadas pelo software – tudo em razão da sequência estabelecida através das predecessoras e sucessoras do cronograma.

Nesse sentido, como bons gerentes de projeto que somos, podemos utilizar o conhecimento obtido nos tempos em que construíamos cronogramas no Microsoft Project Desktop, com o objetivo de garantir que todas as tarefas do cronograma tenham predecessoras e sucessoras.

Eu falei sobre essa boa prática em um dos meus vídeos sobre os cinco erros mais comuns no Microsoft Project:


Por hoje é isso pessoal.

Espero que tenham gostado desse post – um grande abraço e até a próxima!

segunda-feira, 10 de janeiro de 2022

Projetos administrativos no Project Online

Olá pessoal –

Muitas organizações enxergam a necessidade de adotar uma plataforma de gerenciamento de projetos como o Project Online para que tenham condições de capturar a demanda de trabalho dos recursos corporativos, comparando-a então com a capacidade de trabalho das pessoas e tendo assim uma clara visão dos eventuais gargalos existentes (quantas horas no total estão sendo requeridas versus quantas horas estão efetivamente disponíveis).

Este é inclusive um tema que abordei no meu canal do YouTube, em dois vídeos específicos (com tutoriais):



Porém, nem todas as horas que as pessoas dedicam ao trabalho no dia-a-dia estão relacionadas a projetos. É possível inclusive fazer um exercício simples: quantas horas do seu dia são consumidas em reuniões, treinamentos, apoio e suporte, comunicação, entre outras tantas atividades administrativas? Ao pensar nisso, a seguinte pergunta emerge: como utilizar o Project Online para criar um plano de utilização de recursos efetivo, que considere não só as horas trabalhadas em projetos mas também suas horas administrativas?

Projetos administrativos

Para atender essa necessidade, membros do PMO e Gerentes de Recursos podem criar projetos administrativos no Project Online, que tenham como objetivo estabelecer uma previsão de utilização de recursos em atividades administrativas ao longo de um período. Ao criar um projeto administrativo e realizar as devidas atribuições dos recursos corporativos, uma porção de sua capacidade será consumida, reduzindo sua disponibilidade e provendo aos demais usuários uma visão mais fiel à realidade no que se refere à disponibilidade real dos recursos.

Para criar projetos administrativos, o ideal é que um novo tipo de projeto da empresa (EPT) seja criado. Isso facilitará sua identificação e também sua segmentação nas visões de portfólio, nos relatórios e dashboards que a empresa utiliza (observação: é importante ressaltar que a criação de tipos de projeto da empresa é uma prerrogativa exclusiva dos usuários com perfil de administradores).

No exemplo abaixo, criei no meu ambiente um novo tipo de projeto da empresa chamado Projeto Administrativo:


Dessa forma os usuários estarão habilitados a criar novos projetos baseados no EPT administrativo:


Uma vez criado um novo projeto administrativo, o próximo passo será configurar o cronograma. A estruturação das tarefas poderá ser feita de inúmeras formas, a depender das características, do negócio e dos processos de gestão estabelecidos em cada empresa. Neste exemplo, estou estruturando um projeto administrativo para capturar as horas administrativas dos colaboradores da área de Tecnologia da Informação, organizadas em atividades de desenvolvimento e atividades de suporte e sustentação:


Para que você tenha maior nível de controle, e também para garantir que você possa obter uma melhor performance do Project Online no processamento das informações, minha sugestão é que cada grupo de atividades seja subdividida em quatro partes, representando cada trimestre. Dessa forma, ao invés de o software ter que processar uma única tarefa distribuída ao longo de um ano inteiro, ele processará quatro partes menores, melhorando a eficiência e evitando problemas com um grande volume de dados a serem processados.

O próximo passo será estabelecer a duração das tarefas para que respeitem a duração de cada trimestre:


Outro ponto importante: altere o Tipo de Tarefa para que seja Duração Fixa, sem Controle de empenho. Esta alteração deve ser feita para garantir que, independentemente do número de recursos atribuídos às tarefas, e independentemente das suas unidades de atribuição, a duração das tarefas será sempre respeitada (as tarefas não deverão ter sua duração aumentada ou reduzida):


Após finalizar esses passos você poderá iniciar a atribuição dos recursos às tarefas, definindo suas unidades de atribuição para que representem a estimativa de horas a serem dedicadas a cada tipo de atividade administrativa:


Através do modo de exibição Uso das Tarefas é possível observar mais detalhadamente a distribuição das horas dos recursos ao longo de cada período:


Assim, bastará adicionar ou remover recursos às tarefas, aumentando ou reduzindo suas unidades de atribuição de acordo com a expectativa de sua utilização em atividades administrativas ao longo do ano.

Dica final

Para melhorar ainda mais a eficiência dos projetos administrativos, dentro do processo de gestão e manutenção do cronograma, recomendo que você, ao final de cada trimestre, utilize as colunas Bloqueada e Publicar para restringir os usuários de visualizar e editar informações em períodos já encerrados. Isso irá garantir a integridade do cronograma, além de também ajudar na performance do Microsoft Project no processamento das informações.

Se você não souber como utilizar essas colunas, sugiro dar uma olhada neste post.


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

E por hoje é só, pessoal 😉.