segunda-feira, 13 de maio de 2019

Criando relatórios para o Project Roadmap - parte 2


Olá pessoal –

Esta é a parte 2 da série de posts sobre a criação de relatórios utilizando dados do Project Roadmap. Se você ainda não leu a primeira parte, volte lá pois é importante.

Bem, agora que nós já sabemos como estabelecer uma conexão com o CDS, como configurar as permissões adequadas para termos direito a obter os dados, e quais as tabelas que armazenam as informações do Roadmap, vamos entender um pouco melhor a estrutura das tabelas mais importantes para criarmos nosso primeiro relatório.

A primeira tabela que iremos analisar no contexto atual é a tabela msdyn_roadmap. Como seu próprio nome sugere, esta tabela armazena dados gerais dos roadmaps criados na organização. Dentre as várias colunas existentes na tabela, as mais relevantes (e que iremos utilizar para construir o nosso relatório) são:

Nome da coluna
Detalhes
msdyn_name
O nome do roadmap ou dos itens (linhas) criados para cada roadmap
msdyn_roadmapip
O código único identificador do roadmap ou item (chave primária)
msdyn_type
O tipo de dado (0 = Roadmap | 1 = RoadmapRow)
msdyn_type_display
O nome por extenso do tipo de dado



Ao analisar a estrutura desta tabela, é interessante notar que, por mais que seu nome seja msdyn_roadmap, ela não armazena apenas informações dos roadmaps criados... a tabela também é responsável por armazenar as linhas (rows) criadas para cada roadmap. Para evitar qualquer confusão e criar uma estrutura de dados que mantenha uma organização mais lógica, eu prefiro segmentar a tabela para que ela exiba apenas informações a nível dos roadmaps, sem incluir as linhas. Assim, apliquei um filtro na coluna msdyn_type para que apenas sejam selecionados dados onde o valor seja igual a 0 (zero):



O passo seguinte foi duplicar a tabela msdyn_roadmap e criar uma nova tabela chamada msdyn_roadmaprow, a qual será responsável por incluir apenas dados onde o valor da coluna msdyn_type seja igual a 1 (um), ou seja, as linhas (rows) de cada roadmap:




Após duplicar a tabela e alterar o filtro, uma ação complementar foi realizada: a coluna msdyn_parentroadmapid foi adicionada à tabela. A inclusão desta coluna é muito importante e deve ser feita na tabela duplicada, uma vez que cada uma das linhas (rows) estará conectada a seu respectivo roadmap. Em outras palavras, cada linha é um filho do roadmap (pai).

Após realizar as alterações, vamos dar uma pausa para estabelecer um relacionamento entre as duas colunas, de modo a compreender melhor como será a sua comunicação:




A imagem acima deixa as coisas mais claras: para cada roadmap existente, podem haver múltiplas linhas (rows) criadas. Faz sentido pra você?

Então vamos lá...

O próximo passo será organizar as informações disponíveis na tabela msdyn_roadmapitem. Esta tabela tem como finalidade apresentar todas as tarefas e marcos cadastrados em cada uma das linhas existentes nos roadmaps. Está ficando complicado? Dê uma olhada na imagem abaixo, que tenta demonstrar cada um dos elementos disponíves em um roadmap:




Então, vamos em frente!

Da tabela msdyn_roadmapitem vamos precisar das seguintes colunas:


 Nome da coluna
Detalhes
msdyn_duedate
A data de vencimento do item
msdyn_name
O nome do item
msdyn_roadmapid
O id do roadmap ao qual o item está relacionado
msdyn_startdate
A data de início do item
msdyn_status_display
O status do item, conforme definido no Roadmap
msdyn_type_display
O tipo de item (fase ou data key date)




O passo seguinte será estabelecer um relacionamento um-para-muitos entre a coluna msdyn_roadmapid da tabela msdyn_roadmaprow e a coluna msdyn_roadmapid da tabela msdyn_roadmapitem, pois para cada linha de um roadmap podem haver múltiplos itens:



Agora está ficando legal. Se voltarmos para a área de relatórios do Power BI, será possível criar uma visão inicial de um relatório, usando informações dos roadmaps, das linhas e dos itens:




Porém... (já reparou que sempre há um porém?), temos um pequeno problema: o Project Roadmap permite que key dates sejam criados sem que necessariamente estejam associados às linhas. Estes são key dates que pertencem ao roadmap de maneira geral, não estando vinculados às linhas existentes. Quando isso acontece, por não estarem associados à nenhuma das linhas, os key dates do roadmap acabam ficando órfãos no relatório – é essencialmente o que está acontecendo com os quatro primeiros itens da visão acima.

Na imagem abaixo, é possível visualizar os key dates do roadmap:




Para resolver o problema, vamos tomar as seguintes ações:

1) Duplicar a tabela msdyn_roadmapitem, criando uma nova tabela chamada msdyn_roadmapkeydates
2) Aplicar um filtro na nova tabela para que os dados da coluna msdyn_type_display seja apenas do tipo KeyDate
3) Remover a coluna msdyn_duedate da tabela



Por fim, deve ser criado um novo relacionamento do tipo um-para-muitos entre a coluna msdyn_roadmapid da tabela msdyn_roadmap e a coluna msdyn_roadmapid da tabela msdyn_roadmapkeydates:



Uma vez realizados os ajustes e configurações necessárias em cada uma das tabelas principais, com seus respectivos filtros e relacionamentos, você poderá começar a montar o seu dashboard. Aqui um exemplo visual de possíveis resultados que podemos obter:




Próximos passos

Além das configurações sugeridas neste post, você também pode utilizar as tabelas adicionais (msdyn_roadmapitemlink, msdyn_roadmapRowLink e msdyn_roadmapusersetting) para estabelecer conexões entre os dados dos roadmaps e os projetos existentes no seu ambiente do Project Online. Neste cenário, além de exibir informações relacionadas aos roadmaps, você também poderia exibir informações gerais dos projetos e das tarefas dos cronogramas, de modo a criar uma visão muito mais abrangente do relacionamento existente entre os projetos e tarefas com os roadmaps.

Vou ficando por aqui, e espero que você tenha gostado do post!

Um forte abraço.

quinta-feira, 18 de abril de 2019

Criando relatórios para o Project Roadmap - parte 1

Olá pessoal –

Em alguns posts anteriores aqui no blog, procurei explorar um pouco mais sobre a nova plataforma da Microsoft, o Project Roadmap. Em Outubro de 2018 publiquei o primeiro post com a visão geral do Roadmap; já em Dezembro eu tive o prazer de escrever um artigo junto ao Kenneth Steiness para explicar em mais detalhes os contextos nos quais o Roadmap poderia ser utilizado; finalmente, em Janeiro deste ano eu escrevi um terceiro post para discutir alguns recursos e funcionalidades da plataforma.

Os posts e artigos escritos anteriormente tinham como objetivo iniciar a conversa sobre o Project Roadmap, assim como explorar cenários sobre como a plataforma pode contribuir com o planejamento estratégico das organizações. A partir de agora, a ideia é entrar em alguns detalhes mais técnicos, principalmente no que se refere à criação de relatórios, painéis e dashboards com dados oriundos do Roadmap.

Como você já deve ter lido em algum dos posts anteriores, quando novos roadmaps são criados, os dados são armazenados no CDS (Common Data Services for Apps), e não no tradicional banco de dados OData que armazena dados dos projetos criados no Project Online. Nesse sentido, o resultado prático é que administradores do Project Online, que por padrão possuem acesso ao serviço de relatórios do Project Online (ou seja, podem estabelecer conexões com o banco OData para criar seus relatórios), não terão as mesmas permissões no CDS, e assim não irão conseguir acessar o banco de dados para extrair as informações de que precisam.

Com base nesse contexto, neste post vamos entender um pouco mais sobre o processo de extração de informações do CDS, os bloqueios existentes e os ajustes que precisam ser feitos para garantir que os usuários sejam atribuídos às permissões devidas.

Como saber onde os dados do roadmap são armazenados?

O primeiro passo para construir relatórios com dados dos roadmaps é descobrir a URL que contém o endereço da instância do Dynamics 365 onde os dados estão armazenados. Para isso, abra o navegador e digite https://powerapps.microsoft.com. Na página inicial do PowerApps, clique na engrenagem e então Personalizações Avançadas > Recursos para desenvolvedor:



A página seguinte irá exibir a URL da API do Dynamics a qual você deverá se conectar para obter dados dos roadmaps construídos na sua organização:




Para o meu ambiente de demonstração, a URL do Dynamics 365 é: https://org48c5c3c8.crm2.dynamics.com/


Obtendo dados de roadmaps
Uma vez com o endereço da URL do Dynamics 365 teríamos condições de, em teoria, estabelecer uma conexão com o CDS para obter os dados dos roadmaps e iniciar a construção dos relatórios. No Power BI Desktop, podemos clicar em Obter Dados > Online Services > Common Data Service for Apps (Beta):



Em seguida deve ser inserida a URL com a fonte de dados:



Ao clicar em OK deve-se entrar com as credenciais que farão a autenticação junto ao Dynamics 365. Uma vez realizada a autenticação, será possível identificar todas as entidades disponíveis no ambiente do Dynamics 365. É possível pesquisar o termo ‘roadmap’ para facilitar a identificação de todas as entidades relacionadas ao Roadmap, que são:


- msdyn_roadmap
- msdyn_roadmapitem
- msdyn_roadmapitemlink
- msdyn_roadmapRowLink

- msdyn_usersetting


No próximo post iremos discutir em mais detalhes cada uma das entidades, incluindo como as informações estão estruturadas em cada uma delas e como devemos utilizá-las para construir os nossos relatórios, painéis e dashboards. Por enquanto, ainda temos uma barreira a superar.

O problema atual é que, após selecionar as entidades do Roadmap e clicar em carregar, nenhuma informação é exibida:


Ao clicar no Editor de Consultas do Power BI é possível entender o motivo de os dados não terem sido carregados:


A mensagem de erro apresentada é clara: Expression:Error: Access to the resource is forbidden – ou seja, a conta utilizada não possui as permissões necessárias para obter os dados do Dynamics 365.

Concedendo permissões para leitura de dados dos roadmaps no dynamics 365

Para resolver o problema de permissionamento, você precisará da ajuda de alguém que possua permissões globais no ambiente do Office 365 da sua empresa. Essa pessoa deverá: 1) criar uma nova função (role) que terá as devidas permissões de leitura nas entidades do Roadmap; 2) atribuir a nova função aos usuários que irão consumir os dados do Roadmap para criar os relatórios. O passo-a-passo para está listado abaixo:

1. Acessar o ambiente do PowerApps (https://powerapps.microsoft.com) e clicar na engrenagem > Funções de segurança


2. Na página seguinte, clicar em New para criar uma nova função


3. Neste exemplo, irei nomear a nova função como ‘Roadmap Reporting


4. Em seguida, clicar em Custom Entities para determinar o tipo de permissão a ser associada às entidades do Roadmap para os usuários que forem atribuídos à esta função. A permissão Read (leitura) deve ser combinada com a Key Organization



5. Clicar em Save and Close

6. Na janela seguinte, junto à nova função, clicar no link do Business Unit para acessar as configurações personalizadas da organização


7. Em seguida deve-se selecionar o(s) usuário(s) que será(ão) atribuído(s) à função. Clicar em More Actions > Assign Roles


8. Por fim, basta associar os usuários com a nova função para que eles tenham condições de extrair dados referentes aos roadmaps


Uma vez que as devidas permissões forem corrigidas, você deverá estar apto a obter os dados que serão utilizados no relatório:


Fique ligado pois nos próximos posts falaremos mais sobre a construção dos relatórios, painéis e dashboards com dados do Roadmap.

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

domingo, 3 de março de 2019

Nunca atribua recursos à tarefas resumo

Olá pessoal –

Muitos gerentes de projeto que utilizam o Microsoft Project acabam não seguindo as boas práticas de utilização do software – as vezes por desconhecimento, as vezes por negligência – o que pode gerar resultados diferentes daqueles esperados para o cronograma, podendo inclusive comprometer o planejamento, a execução e a monitoria e controle do empreendimento.

Uma das ações mais comuns dos gerentes de projeto com os quais trabalho no meu dia-a-dia é a de atribuir recursos à tarefas resumo (as tarefas resumo são aquelas que representam um grupo comum de tarefas do projeto, normalmente representando uma fase do projeto). O argumento utilizado, na maioria dos casos, é o seguinte: “o recurso fulano será responsável por toda essa fase do projeto, logo, vou atribuí-lo à fase (tarefa resumo) ao invés de atribuí-lo a cada tarefa individualmente, o que seria muito trabalhoso”.

Esta é, definitivamente, uma prática não recomendada ao se trabalhar com o Microsoft Project. E como sempre procuro explicar com exemplos práticos os motivos de não recomendar que se trabalhe no software dessa maneira, resolvi escrever este post pois assim podemos ajudar um maior número de pessoas e também pra já ter tudo documento nos casos futuros 😊.

Abaixo vou listar os principais motivos para que se evite a atribuição de recursos à tarefas resumo.

Problema #001 – superalocação, atribuições duplicadas e cálculo de esforço incorreto

Ao atribuir recursos à tarefas resumo, o MS Project poderá acabar apresentado resultados divergentes no que se refere ao montante de trabalho (esforço) requerido ao recurso ao longo do projeto. Além disso, outros problemas também podem acontecer, a depender de como as atribuições são configuradas. Os problemas mais comuns são:

1 - Cálculo incorreto do montante de horas de trabalho (esforço) requerido ao recurso

2 - Problemas de superalocação e duplicidade de trabalho caso o recurso também esteja atribuído às subtarefas

Veja o exemplo abaixo, referente ao primeiro cenário. Ao atribuir o recurso apenas à tarefa resumo, o cálculo do trabalho apresenta um valor incorreto (enquanto o montante total de esforço do recurso é de 24 horas, o trabalho total esperado para as 3 sub-tarefas do projeto é de 72 horas):


Já no segundo cenário, caso o recurso também seja atribuído às sub-tarefas, o montante de esforço será calculado em duplicidade. Perceba que o trabalho esperado para o projeto já não é mais de 72 horas (a soma das 3 sub-tarefas), mas sim de 96 horas. Além disso, uma vez que há atribuições em duplicidade, o recurso também passa a ser apresentado como superalocado, pois o total de esforço de suas atribuições será superior à sua capacidade diária de trabalho:


Apenas para contextualizar melhor, em ambos os casos estou utilizando um modo de exibição combinado, ou seja, uma janela dividida com os modos de exibição Gráfico de Gantt e Uso dos Recursos.
            
Problema #002 – reporte de progresso

Outro problema recorrente da atribuição de recursos à tarefas resumo se dá quando é necessário reportar o progresso das tarefas. Por padrão, o comportamento das tarefas resumo no Microsoft Project é o de absorver e consolidar o montante de progresso reportado nas suas sub-tarefas. Nesse sentido, caso o reporte de progresso seja realizado nas sub-tarefas, o percentual concluído da tarefa resumo será calculado automaticamente pelo software:


Da mesma maneira, ao reportar progresso na tarefa resumo, as sub-tarefas serão impactadas automaticamente, mesmo que essa não seja a intenção:


Problema #003 – modelos de cronograma

Se você utiliza uma plataforma unificada de gerenciamento de projetos como o Microsoft PPM (Project Server ou Project Online), você não poderá iniciar novos projetos que tenham como modelo um cronograma com recursos atribuídos à tarefas resumo. Ao iniciar a criação de um novo projeto, a plataforma bloqueia o processo e uma mensagem de erro é apresentada, de modo que não é possível concluir a ação.

Conclusão

Para finalizar este post e reforçar a ideia de que nunca devemos atribuir recursos à tarefas resumo, para além dos argumentos citados anteriormente, acredito que valha a pena fazer uma pequena reflexão: em um projeto, as pessoas (recursos) são responsáveis pela execução de atividades (tarefas) que, juntas, formam um determinado pacote de trabalho (normalmente representada em uma tarefa resumo). Nesse sentido, um recurso nunca será, na prática, responsável por uma “fase” do projeto: ao contrário, ele irá executar ações coordenadas para que as entregas daquela fase sejam realizadas.

Portanto, se você ainda faz parte do time dos gerentes de projeto que atribuem recursos à tarefas resumo, chegou a hora de mudar de lado.

Como já é de praxe, neste link você poderá fazer o download deste post. 

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


quinta-feira, 7 de fevereiro de 2019

MVP Conference LATAM 2019


Olá pessoal,

Como aconteceu no ano passado, este ano teremos a segunda edição do MVP Conference LATAM 2019, o maior evento técnico realizado por experts Microsoft na América Latina.

O MVP Conf 2019 será realizado nos dias 12 e 13 de Abril, na Universidade Anhembi Morumbi em São Paulo.

O MVP Conf é realizado e mantido pelo time de MVPs do Brasil (com apoio da Microsoft) e neste ano irá entregar mais de 140 palestras nas mais variadas trilhas: .NET, Acessibilidade, Banco de Dados, Big Data, Gerenciamento de Projetos, Power BI, Office 365, Inteligência Artificial, Machine Learning, IoT entre outras.

Eu também irei palestrar no evento, na trilha de gerenciamento de projetos. O tema da minha palestra será: Data Driven Decisions: Como extrair dados do Project Online e SharePoint com o Power BI para criar Painéis, Relatórios e Dashboards para o Escritório de Projetos. O objetivo da palestra será apresentar casos de uso reais sobre como obter, modelar e apresentar informações do portfólio de projetos do Project Online através do Power BI, criando visualizações que dêem suporte ao PMO no processo de tomada de decisão. Na palestra irei utilizar experiências e desafios reais do meu dia-a-dia como consultor PPM, e como cada solução foi desenvolvida para resolver as necessidades de negócio apresentadas.

Ainda na trilha de gerenciamento de projetos, teremos outras sessões imperdíveis:

> O André Xavier irá entregar uma sessão sobre o Roadmap
> O Ricardo Monge falará sobre características gerais do Project Online, seus benefícios e melhores práticas de adoção
> O Mário Trentim fará um dueto com o João Benito Savastano para compartilhar dicas e truques sobre como efetuar a gestão ágil de projetos com o Project e o Planner

Isso sem contar inúmeras outras palestras das mais de 16 trilhas com os maiores experts do mercado.

Porém, caso você ainda esteja pensando se vale a pena participar do MVP Conf 2019, fica aqui o argumento final: 100% do valor arrecadado com o evento será destinado a 5 instituições beneficentes em diferentes regiões do Brasil. Ou seja, além de melhorar seus conhecimentos, ter a oportunidade de fazer networking com um super time de especialistas em plataformas Microsoft e dar um up na sua carreira, você também irá contribuir (e muito) com quem realmente precisa! 🙌

Acesse o site do MVP Conf, confira a grade de palestras, faça sua inscrição e participe conosco:  https://mvpconf.com.br/

Te vejo em Abril! Apareça lá na minha palestra e vamos bater um papo!


#MVPConf