Recentemente iniciei uma playlist no meu canal do YouTube onde estou gravando vídeos para falar com um pouco
mais de profundidade sobre as possibilidades de extensão do Microsoft Project
for the web. No vídeo número #002 dessa série abordei o tópico de como criar
campos personalizados através da interface do Power Apps, de modo que seja possível
coletar atributos personalizados a respeito dos projetos:
Um item que acabei não discutindo no vídeo foi a
possibilidade de criar campos personalizados que sejam baseados em fórmulas,
então decidi escrever esse post como complemente ao vídeo.
A título de exemplo, suponha que uma determinada
empresa queira descobrir qual o retorno sobre investimento de um determinado projeto. Para isso ela precisará coletar
dois atributos – Custo Proposto e Retorno Financeiro – que deverão ser adicionados
ao Microsoft Project for the web na forma de campos personalizados do tipo currency
(moeda), conforme comentei no vídeo. Então, a empresa precisará criar um
terceiro atributo (ou seja, um campo personalizado) chamado ROI, que será baseado
na divisão entre o Retorno Financeiro pelo Custo Proposto.
Vamos então botar a mão na massa e criar o campo
no nosso ambiente.
Retorno sobre investimento – roi
Uma
vez no ambiente do Dynamics (https://make.powerapps.com),
selecione a solução com a qual você está trabalhando (caso tenha criado uma
solução) e em seguida clique na entidade Projetos. Em seguida, na lista de
comandos na parte superior, clique em + Add field. Você poderá
determinar o nome do novo campo personalizado, assim como suas demais características.
Em Data type, selecione número decimal (Decimal number), e em
seguida clique em +Add para adicionar um cálculo:
O Power Apps irá solicitar que você salve o
trabalho para continuar. Em seguida é importante ficar atento, pois a criação do
novo campo será feita em uma nova janela (via um pop-up), e caso o seu navegador
esteja com o bloqueador de pop-ups ativado, você poderá ter problemas em abrir
a nova janela:
Habilite o pop-up para poder continuar, e caso a
janela não seja aberta automaticamente, clique no link disponibilizado pelo sistema:
Uma vez com a nova janela aberta, bastará definir
os parâmetros do campo calculado. O Microsoft Dynamics organiza a lógica de
construção oferecendo condições e ações, de modo que seja possível construir
campos personalizados simples ou complexos, a depender da necessidade apresentada.
Para
este exemplo, clique na opção de adicionar uma condição (Add condition).
O grupo será então expandido para que seja possível determinar todas as
condições necessárias:
A lógica a ser aplicada deverá verificar se o
campo é igual a zero (pois, caso o Custo Proposto seja zero, não será
necessário efetuar a divisão, uma vez que não é possível dividir um número por
zero):
Logo, se o valor do Custo Proposto é zero, a
resposta também será zero. Para isso, adicione uma nova ação (Add action)
e digite o número zero na área de resposta:
Porém, caso o valor do Custo Proposto não seja
zero, então o cálculo do ROI deverá ser realizado. Para isso, adicione uma nova
seção para continuar avaliando a fórmula, clicando em Add Else:
Como não será necessário analisar uma segunda
condição, bastará adicionar uma nova ação que irá determinar o cálculo a ser
feito (Add action):
Uma vez que todas as condições e ações tenham
sido adicionadas, clique em Save and Close para finalizar a construção
do novo campo.
Dessa
maneira, todas as vezes em que um novo projeto for criado no ambiente, o
cálculo do ROI será executado de acordo com os parâmetros definidos.
Mais um post sobre as novidades que a Microsoft vem
implementando no Project for the web (conforme já havia comentado aqui
e aqui).
Na
página User Voice do Project há uma ideia que sugere a inclusão de modelos de cronograma no Project for the
web – afinal, a grande maioria das organizações possui modelos de cronograma que
devem ser utilizados quando um novo projeto é iniciado:
Levando em conta o feedback da comunidade, a
Microsoft começou a fazer o roll-out parcial dessa funcionalidade, de modo a
permitir que os usuários possam iniciar novos projetos a partir de um projeto
existente – veja que não se trata de iniciar a partir de um modelo (como
sugerido inicialmente), mas sim a partir de uma cópia de um projeto existente.
Hoje,
ao acessar o meu ambiente do Project for the web, já me deparei com o
comunicado:
Como o próprio comunicado já deixa claro, o
processo para copiar um projeto é simples, bastando clicar no nome do projeto a
partir do qual a cópia será feita e então optar por copiá-lo. Baseado nisso,
resolvi experimentar e ter minhas impressões.
O que
acontece quando você copia um projeto?
Ao copiar um projeto, algumas informações do
projeto existente são carregadas para o novo projeto, enquanto outras não são.
Abaixo os detalhes:
O
que é mantido:
Toda a estrutura de tarefas, com seus vínculos,
durações e datas
Os buckets oriundos do projeto original
As anotações que foram realizadas nas tarefas do
projeto original
O que não é mantido:
O percentual de conclusão das tarefas (todas as
tarefas no novo projeto são zeradas)
As atribuições dos recursos (o novo projeto
nasce sem membros e sem atribuições)
O cálculo do Tempo necessário (esforço em horas)
– como o novo projeto nasce sem recursos/atribuições, a distribuição das horas
não é feita como no projeto anterior, que aloca o montante de horas por recurso
em relação à duração das tarefas (comportamento padrão)
O novo projeto também, por padrão, não é
associado a nenhum grupo. É possível, no entanto, associá-lo a um grupo existente
ou criar um novo grupo exclusivo para este projeto
Pois é, em resumo, é o que temos pra hoje.
Particularmente, penso que a Microsoft precisa aperfeiçoar esse recurso – pois
eu ainda prefiro utilizar modelos de cronograma. Modelos são, essencialmente,
criados para servir como o padrão oficial aprovado na organização no que se
refere à construção de cronogramas. Eles determinam as tarefas principais, sua
sequência lógica de relacionamento, e devem considerar as boas-práticas de
gerenciamento de projetos e agendamento de tarefas, somando-se aos processos em
vigor na companhia.
Quando começamos um projeto copiando um cronograma
existente, corre-se o risco de que o cronograma sendo utilizado como referência
não esteja seguindo essas boas práticas, comprometendo a qualidade do novo cronograma
desde o princípio.
A Microsoft ainda está pedindo feedbacks a
respeito do que os usuários estão achando sobre essa nova funcionalidade,
portanto vale bastante a pena testá-la e então ir lá no portal User Voice e
compartilhar suas sugestões para que a funcionalidade possa ser melhorada.
Conforme eu havia comentado no post sobre as novidades do Project for the web, a Microsoft iniciou o roll-out
relacionado ao novo modelo de licenciamento para a plataforma, de modo a garantir
que qualquer usuário do Office 365 que esteja associado a uma licença E5 possua
acesso de leitura aos projetos criados no Project for the web. O anúncio oficial foi publicado na última sexta-feira, 29 de Maio de 2020.
Uma vez que a nova funcionalidade entrou em vigor,
resolvi conferir para entender melhor o seu funcionamento.
Acesso de leitura na prática
Do ponto de vista do gerente de projeto, para
garantir que os usuários com licença E5 tenham condições de visualizar um
determinado projeto, é necessário adicioná-los como membros do grupo que está
associado ao projeto. Para isso, basta adicioná-los diretamente ao grupo na
página do projeto – ou então atribuí-los a uma tarefa, o que automaticamente irá
adicionar os usuários ao grupo.
No exemplo
abaixo, um usuário chamado Roberto Gomes foi atribuído a algumas tarefas do
projeto:
Perceba que, ao atribuir uma ou mais tarefas ao
Roberto, ele é automaticamente adicionado ao grupo relacionado ao projeto:
Da perspectiva do usuário, o que acontece é o
seguinte: ao acessar o Project for the web https://project.microsoft.com, o nosso
usuário irá visualizar os projetos que foram compartilhados com ele. Perceba que,
na página inicial do Project for the web (Project Home), o comando Novo projeto
em branco, que permite a criação de novos projetos para usuários com
licenças do Microsoft Project (P1, P3 e P5), estará oculto:
O usuário poderá então acessar o projeto que
desejar. Ao visualizar as tarefas do projeto, todas as tarefas aparecerão bloqueadas
com a mensagem Esta célula é somente leitura:
Dessa forma, mesmo ao clicar no comando que
permite a exibição dos detalhes da tarefa, seu conteúdo permanecerá bloqueado:
Esse
movimento abre um leque muito grande de possibilidades para garantir
visibilidade dos projetos e empreendimentos em toda a organização, sem restrições
e custos adicionais. Bola dentro da Microsoft!
Nesse mês de Maio/2020 publiquei um vídeo no meu
canal do YouTube
onde explico como é possível construir, via Power BI, um relatório que
consolide múltiplos cronogramas criados no Microsoft Project:
Uma vez publicado, o vídeo gerou uma excelente
repercussão, e recebi muitos comentários e mensagens com dúvidas complementares.
Uma dúvida em particular que me chamou a atenção estava relacionada a
possibilidade de atualizar múltiplos cronogramas de uma única vez:
“Eu tenho múltiplos cronogramas para gerenciar, e
periodicamente preciso acessar cada um deles individualmente no MS Project para
atualizar as tarefas, e esse é um trabalho manual, repetitivo e que consome
muito tempo. O que eu queria saber é se é possível atualizar todos os
cronogramas de uma forma centralizada, para ser mais eficiente e economizar
tempo. Pode me ajudar?”
Essa é uma dúvida muito pertinente e interessante,
então gostaria de explorá-la um pouco mais nesse post. Há cerca de dois anos, publiquei um post aqui no blog para discutir em detalhes a importância de se
trabalhar com a Data de Status no momento da atualização dos cronogramas. Adicionalmente,
no meu canal no YouTube, publiquei um vídeo de 50 minutos com as boas práticas para
atualização de cronogramas e inserção das informações reais do andamento do
projeto:
Nesse sentido, se você ainda não conhecia esses
dois materiais, sugiro reservar um tempo para estudá-los, pois os conceitos que
vamos discutir abaixo utilizam informações do post e do vídeo como referência 😉.
Atualizando múltiplos projetos
Voltando ao ponto central do post de hoje, caso você
queira atualizar múltiplos cronogramas de maneira centralizada, poderá criar um
projeto em branco (temporário) no Microsoft Project e então adicionar cada um
dos cronogramas individualmente para que seja possível efetuar as ações de
atualização de maneira mais simplificada e eficiente – um conceito parecido com
o recurso de Projetos Mestre e Subprojetos.
Inicie
o trabalho abrindo um novo projeto em branco no Project:
Em seguida, você poderá adicionar os projetos a
serem atualizados clicando em Projeto > Subprojeto:
Uma vez que os cronogramas que você deseja
atualizar estejam inseridos no projeto temporário, você poderá expandi-los para
exibir todas as tarefas. Como eu explico no post e no vídeo que deixei como
referência, o ideal é definir a Data de Status para que seja possível
referenciar o status de cada uma das tarefas dos projetos inseridos. Após
definir a Data de Status, você poderá adicionar a coluna Status à tabela
atual para que seja possível filtrar, por exemplo, as tarefas atrasadas:
Uma vez que você tenha identificado as tarefas
atrasadas em cada um dos cronogramas, poderá atualizá-las conforme a situação
de cada uma delas.
Quando
o trabalho de atualização tiver sido concluído, você terá que fechar o projeto temporário
(Projeto1), mas não deverá salvá-lo. A maneira mais segura de efetivar
essa ação é clicando em Arquivo > Fechar. Quando o Project
perguntar se deseja salvar as mudanças em Projeto1, clique Não:
Logo em seguida, o software irá perguntar se
você deseja salvar as mudanças realizadas em cada um dos projetos. Nesse caso a
resposta é Sim, pois desejamos que as alterações feitas nos cronogramas
sejam salvas. Como podemos ter atualizado vários cronogramas de uma única vez, o
mais fácil é escolher a opção Sim para tudo:
Dessa forma as alterações serão aplicadas em
cada um dos projetos de maneira individualizada, mas não iremos criar projetos
mestre e nem subprojetos. Simples e eficiente.
Importante lembrar uma coisa:
o fato de termos definido uma data de status no projeto temporário irá permitir
a identificação e seleção das tarefas atrasadas de todos os subprojetos inseridos,
mas não irá efetivamente definir a data de status de cada um dos projetos
individuais. Se desejar atualizar a data de status de cada um dos cronogramas,
ainda precisará atualizá-los individualmente.
E você, tem algum processo preferido para
atualização dos cronogramas periodicamente? Deixe o seu comentário para que
possamos compartilhar outras maneiras lidar com atualizações múltiplas.
Um post bastante famoso aqui do blog é um que
falo sobre o conjunto de relatórios personalizados para o Microsoft Project que eu construí e
disponibilizei de forma gratuita para os usuários do software. Até hoje, os
arquivos com os relatórios foram baixados 2.472 vezes (!), um número que eu jamais
imaginei que pudesse alcançar. No meu canal no YouTube eu também falei sobre como construir os relatórios do zero, para os casos nos quais o conjunto que eu
havia disponibilizado não atender necessidades específicas.
Recentemente recebi um e-mail de uma pessoa que
havia feito o download e estava usando os relatórios. A pessoa havia comentado
que o Project era um software fundamental na empresa, e que eles sempre
utilizavam a Data de Status para atualizar os cronogramas. Porém, havia um problema: o time
do PMO havia realizado algumas modificações nos relatórios, e identificaram que
o campo contendo a Data de Status não estava disponível para ser inserida nos
relatórios 😕
Poxa Microsoft, que bola fora! Deixar de fora
dos campos disponíveis para os relatórios uma informação tão importante? Mas
acontece que, como somos todos inconformados, fomos lá tentar resolver o
problema 😁
É interessante perceber que, ao acessar a área
de relatórios e expandir a seção de Datas, várias informações estão disponíveis
– como por exemplo a Data Limite, Data de Restrição, e as datas de Início e
Término dos sprints – mas a bendita da Data de Status não está lá.
Então,
para dar um jeito nessa situação, temos que criar um campo personalizado do
tipo Data que seja uma réplica da Data de Status. O passo-a-passo: 1. Clicar em Projeto > Campos
Personalizados > selecionar o tipo Data 2. Selecionar o primeiro campo de data disponível e
clicar em Renomear. Eu renomeei o meu campo para Data Status, mas
você pode ficar à vontade para renomear o campo de acordo com a sua necessidade 3. Em seguida, clicar em Fórmula. Na caixa
de diálogo, clicar em Campo > Projeto > Data > Data
de Status
4. Em Cálculo das linhas de resumo de tarefa e
de grupo selecionar Usar Fórmula Em seguida você deve garantir que a Data de Status
está definida para o seu projeto. Ao retornar ao seu relatório personalizado,
expanda a visualização da Lista de Campos e então a subseção Data.
Em Personalizado você deverá encontrar o campo que acabou de ser criado,
e então poderá adicioná-lo ao relatório:
Aproveitando um pouco de tempo livre para tirar
a poeira aqui no blog. Infelizmente não tenho mantido a regularidade de
postagens como gostaria, pois acabei direcionando o trabalho mais para o meu
canal no YouTube
– porém, prometo que irei retomar as postagens com mais frequência.
Hoje quero aproveitar para compartilhar alguns
anúncios realizados recentemente pela Microsoft, no que se refere ao Project
for the web. O Project for the web é uma versão completamente renovada do
Microsoft Project, baseado no Power Platform (eu falei em detalhes sobre o
Project for the web nesse post
e também nesse vídeo).
#1: Licenciamento
Pois bem, o que acontece é que, desde sempre, o
assunto licenciamento tem sido um problema frequente para as organizações que
utilizam a solução PPM (Project Server e Project Online). Como existem
diferentes perfis que utilizam a plataforma (Administradores, Executivos,
Gerentes de Portfólio, Gerentes de Projeto e etc.), a Microsoft dividiu o
licenciamento (do Project Online) em três tipos: Project Online Premium (agora chamado de P5),
Project Online Professional (agora P3) e Project Online Essentials (agora P1).
Mesmo com essa divisão do licenciamento, alguns cenários ainda ficaram
descobertos: o que fazer com os usuários que desejam apenas visualizar as
informações dos projetos, sem necessariamente realizar interação com os
cronogramas? E os gerentes e/ou executivos que precisam ter visibilidade de
datas importantes do portfólio, mas que não irão atuar na manipulação dos
dados?
Para resolver esse problema a Microsoft anunciou, agora no mês de Abril/2020, que usuários com
licenças do Office 365 terão acesso de leitura ao Project for the web e ao Roadmap.
Isso significa que algumas licenças do Office 365 com maior nível (as licenças
E5) irão conceder permissão para que os usuários possam visualizar informações
dos projetos do Project for the web e também dos roteiros do Roadmap que forem
compartilhados com eles.
Essa é uma excelente notícia para as organizações
que desejam ter mais flexibilidade na colaboração entre as diferentes equipes
que participam dos projetos, sem necessariamente ter que aumentar o valor do
investimento em licenciamento.
#2: Filtros de tarefas
Outra novidade do
Project for the web é que agora a plataforma irá permitir que filtros sejam
realizados nas tarefas do cronograma através de uma pesquisa simples, usando o
nome das tarefas como referência. Agora, ao abrir o
cronograma de um projeto no Project for the web, os usuários passarão a
visualizar a opção de Filtros na parte superior direita da janela, o que
permitirá filtrar as tarefas através de uma digitação simples:
Aqui ainda vale ressaltar que, infelizmente, a
opção de filtro só está disponível na visão Tabela. As áreas de Quadro e Linha
do Tempo ainda não disponibilizam a opção de filtrar as tarefas.
#3: Copiar projetos
A terceira novidade planejada pela Microsoft trata-se da possibilidade de copiar projetos existentes
quando da criação de um novo projeto, permitindo assim que os usuários não
iniciem seus novos projetos do zero. Esse é um tópico muito importante para garantir
certo grau de conformidade e padronização às organizações que desejam utilizar
(ou que já estejam utilizando) o Project for the web, principalmente se
considerarmos que no Project Online já podemos fazer isso através da utilização
de modelos.
Bem pessoal, por hoje é isso.
Uma coisa que seria interessante saber é quem
aqui já está utilizando o Project for the web: o que estão achando? Quais as
sugestões de melhorias que poderiam ser desenvolvidas na plataforma?
Se você é um administrador do Project Online, é
bom ficar atento a um erro bastante comum que está associado à utilização de
workflows. Imagine que você construa um workflow que suporte o processo de gerenciamento de projetos em vigor na sua
organização; uma vez que você finalizar a construção do workflow, você vai
testá-lo e percebe que o workflow não é efetivamente disparado como deveria. Ao
acessar a página de Status do Fluxo de Trabalho, você encontra a seguinte
mensagem:
“O fluxo de trabalho
ainda está processando. Atualize a página e tente novamente”
Você atualiza a página, mas nada acontece. O
fluxo não se move... ao acessar a página Dados Adicionais do Workflow, a
seguinte mensagem é apresentada:
“Acesso negado. Você
não tem permissão para executar esta ação ou acessar este recurso.”
Bem, se este é o erro que você está enfrentando,
então fique tranquilo. O erro está relacionado ao fato de que o usuário que
está executando o workflow não está inserido em um dos grupos de segurança do
Project Online. Mesmo que o usuário seja um administrador da coleção de sites
do Project Online, caso não esteja incluído dentro de um dos grupos de segurança,
ele não poderá executar workflows.
Assim,
pare resolver o problema, basta navegar à seção de gerenciamento de usuários,
selecionar o usuário com problemas, e adicioná-lo ao grupo que caracteriza suas
permissões no ambiente (Administrador, Project Online e etc.). Assim, bastará
reiniciar o workflow para que tudo funcione conforme esperado 😊
Dia desses um cliente me enviou um e-mail com o
seguinte requerimento:
“Precisamos automatizar alguns
processos internos para que, quando o projeto atingir determinado estágio do workflow
no Project Online, uma série de e-mails sejam disparados para alguns usuários-chave.
Além disso, as informações capturadas no termo de aberta do projeto também deverão
ser transferidas para um documento, que será enviado como anexo para o nosso
grupo de executivos”.
Acontece
que, ao fazer uma requisição HTTP para o SharePoint, por algum motivo a tabela ProjectWorkflowStageData
não oferece suporte para obtenção dos dados relacionados ao estágio dos
projetos:
Neste exemplo, após um projeto ser publicado,
estamos passando o parâmetro do Id interno do projeto para a requisição HTTP, com
o objetivo de obter o estágio atual do projeto publicado. Quando o flow é
executado, temos como resposta o seguinte erro:
O erro apresentado é o seguinte:
"The type
'ReportingData.ProjectWorkflowStageData' specified in the URI is neither a base
type nor a sub-type of the previously-specified type
'ReportingData.Project'."
O ponto
interessante é que, se trocarmos o endpoint para tarefas (Tasks()),
o flow consegue obter todas as tarefas do projeto em questão normalmente (comprovando
que a lógica e a instrução incluídas no Power Automate estão corretas):
Após quebrar muito a cabeça para entender o
motivo de os dados do workflow não estarem disponíveis, decidi fazer uma
tentativa usando a api REST do Project Server:
A instrução uri que deve ser utilizada é a
seguinte:
/_api/ProjectServer/Projects(‘<parâmetro
do id do projeto>’)?$Select=Stage/Name&$Expand=Stage
Ao
rodar o flow, temos o resultado esperado:
A partir daí é possível dar continuidade ao flow,
determinando todas as ações que devem ser executadas na sequência, de acordo
com o estágio em que o projeto se encontra.
Pois é, por hora é isso. Mesmo este sendo um
post mais curto e simples, acabou sendo bastante útil pra mim na resolução do
requerimento de negócio que tinha. Então, espero que seja útil para você também
😊