Mostrando postagens com marcador Roadmap. Mostrar todas as postagens
Mostrando postagens com marcador Roadmap. Mostrar todas as postagens

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!

quinta-feira, 31 de janeiro de 2019

Roadmap - Recursos e Funcionalidades

Olá pessoal,

Dando continuidade ao post publicado no mês de Dezembro, onde em parceria com o Kenneth Steiness eu pude explicar o funcionamento e o processo de construção de roadmaps, no post de hoje gostaria de explorar alguns recursos e funcionalidades adicionais da plataforma, para que seja possível dinamizar o trabalho e entender um pouco melhor o funcionamento do Roadmap nos bastidores.

ADICIONANDO ITENS PELA CENTRAL DE PROJETOS

Quando o Roadmap é habilitado no Office 365, o Project Online ganha um novo comando na Faixa de Opções (Ribbon) da Central de Projetos – este comando foi traduzido como Adicionar ao Roteiro. Através deste comando, os usuários do Roadmap podem rapidamente adicionar tarefas resumo, tarefas regulares ou marcos às linhas do seu roadmap.


Este é um recurso que facilita bastante a escolha dos elementos que devem ser exibidos no roadmap – sendo que o fator principal se deve ao fato de que adicionar as tarefas pela página do próprio Roadmap, como eu mostrei no post anterior, pode ser um pouco confuso, uma vez que não se tem visibilidade sobre todos os detalhes das tarefas sendo adicionadas.

Aqui, cabe ressaltar um ponto muito importante: só é possível adicionar tarefas de um cronograma via Central de Projetos caso o projeto em questão já tenha sido previamente conectado ao Roadmap. Caso você acesse o projeto diretamente (via Central de Projetos) sem antes tê-lo conectado ao roadmap, ao pressionar o comando Adicionar ao Roteiro será apresentado à seguinte mensagem:


Uma vez estabelecida a conexão entre o roadmap e o cronograma, ao clicar novamente em Adicionar ao Roteiro você estará apto a dar continuidade às configurações:


Também é interessante perceber que você pode selecionar múltiplas linhas do cronograma para adicioná-las de uma vez só ao seu roadmap:



PERMISSÕES DE ACESSO

Ao criar novas linhas em um roadmap, você precisa determinar o seu proprietário. Do ponto de vista do Roadmap, os proprietários são as pessoas responsáveis pela entrega (e também pela gestão) dos itens (tarefas regulares / tarefas resumo / marcos) incluídos na linha.

Nesse sentido, seria natural concluir que, ao determinar um proprietário para uma linha, esta pessoa recebesse automaticamente as permissões de acesso ao roadmap, correto? Pois é, infelizmente não é bem assim...

Peguemos como exemplo o Arthur Mamede: no cenário que estamos acompanhando nesse post, o Arthur foi incluído como proprietário da linha ‘Processos & Escritório’. Entretanto, ao acessar a página Home (https://project.microsoft.com), ele não possui visibilidade do roadmap há pouco criado:


Portanto, para que alguém possua acesso a um roadmap (mesmo que sendo proprietário de uma ou mais linhas), é necessário que esta pessoa seja adicionada como um membro do roadmap:


Deste modo, na próxima vez que o Arthur tentar acessar a seção Compartilhados comigo na página Home, terá visibilidade do novo roadmap e poderá acessá-lo normalmente:


E SE UM PROJETO FOR EXCLUÍDO?

Caso um projeto conectado a uma linha do roadmap venha a ser excluído, na próxima vez em que a sincronização for realizada pelo Microsoft Flow, uma mensagem de erro será apresentada junto à linha em questão:


Ao clicar em Detalhes será possível entender o motivo da falha na sincronização das informações, e então o projeto poderá ser removido:


E você, já está utilizando o Roadmap na sua organização?

Vou ficando por aqui, um forte abraço e até a próxima!