domingo, 22 de março de 2020

Acesso negado. Você não tem permissão para executar esta ação ou acessar este recurso

Olá pessoal –

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 😊


É isso aí, espero que ajude e até a próxima!


sábado, 18 de janeiro de 2020

Obtendo o estágio dos projetos via Power Automate

Olá pessoal –

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”.

Mamão com açúcar, pensei. Lá no meu canal no YouTube eu já falei sobre como automatizar o processo de envio de notificações no Project Online com o Power Automate, e também já havia publicado dois vídeos falando sobre como enviar dados do projeto para um documento. Porém, quando fui colocar a mão na massa, esbarrei num cenário inesperado...

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 😊

Um abraço e até a próxima!

segunda-feira, 11 de novembro de 2019

Microsoft Ignite 2019















Olá pessoal –

Para aqueles que, assim como eu, não tiveram a oportunidade de estar em Orlando entre os dias 4 e 8 de Novembro para acompanhar o Microsoft Ignite in loco, é importante lembrar que já estão disponíveis todas as gravações das sessões entregues no maior evento de tecnologia promovido pela Microsoft 😍.

Vou disponibilizar aqui no post os links para as sessões sobre o Microsoft Project, e também alguns outros links adicionais para sessões que estejam relacionados com esse tema:


The future of Microsoft Project is here:

The Power of the new Microsoft Project and Microsoft 365:

Deep dive on the new Microsoft Project:

The new Microsoft Project: Built for teams:

Microsoft Project for the web – Reporting and Dashboards: https://myignite.techcommunity.microsoft.com/sessions/81244

Extending the new Microsoft Project with the Power Platform: https://myignite.techcommunity.microsoft.com/sessions/81245

Automate your tasks with Project, Planner, and Microsoft Flow: https://myignite.techcommunity.microsoft.com/sessions/81296

Intelligent automation with Microsoft Flow:

Automating your business process with Microsoft Flow and Teams integration: https://myignite.techcommunity.microsoft.com/sessions/78651

Become a Microsoft Flow super hero:


Bons estudos!


segunda-feira, 4 de novembro de 2019

Power Platform World Tour | São Paulo

Olá pessoal –

Nos dias 18 e 19 de Novembro irá acontecer na cidade de São Paulo o 'Power Platform World Tour', um dos maiores eventos sobre as soluções da Power Platform (PowerApps, Power BI e Flow).  O conteúdo será entregue 100% em Português, e irá contar com um time estelar de especialistas e líderes técnicos da comunidade. Vale a pena dar uma olhada para saber mais:

https://www.powerplatformworldtour.com/locations/saopaulo


Este será um grande evento, e irei participar para ter a oportunidade de encontrar grandes amigos e melhorar meus conhecimentos em todas as ferramentas que integram o Power Platform.

Nos vemos por lá 🚀

terça-feira, 29 de outubro de 2019

Uma nova era se inicia: o novo Project está oficialmente disponível

Olá pessoal –

Agora é pra valer: a Microsoft acaba de anunciar oficialmente o novo Project for the web – ou simplesmente ‘Project’. Como eu havia comentado no post anterior, trata-se de uma versão reimaginada do software de gerenciamento de projetos mais utilizado em todo o mundo, que foi desenhado do zero a partir da plataforma Power Platform – e que agora estará disponível exclusivamente na web.

Hoje iremos explorar em linhas gerais os recursos e funcionalidades iniciais do Project for the web. Ao final do post irei deixar links e referências da documentação disponibilizada pela Microsoft, caso você queira saber mais detalhes sobre planos, licenciamento, próximos passos e etc.

O que é o project for the web?

De maneira bem simples, podemos dizer que com o lançamento do Project for the web a Microsoft tem como objetivo preencher o vácuo existente entre as duas plataformas de gerenciamento de trabalho e projetos atuais: o Planner e o Project Online. Enquanto o Planner é uma excelente plataforma para o gerenciamento compartilhado de tarefas e pequenos projetos, ele não possui alguns recursos que são muito solicitados pelos usuários, como por exemplo a possibilidade de se estabelecer vínculos entre as tarefas, ou mesmo a possibilidade de utilização do conceito de tarefas e subtarefas, entre outras funcionalidades. Já o Project Online é uma plataforma completa para gerenciamento de portfolios, programas e projetos; entretanto, por muitas vezes é considerado muito “formal” e “burocrático”, e os seus conceitos de check-in, check-out, linha de base, publicação e etc. podem se apresentar como uma barreira para os gerentes de projeto que desejam trabalhar com mais dinamismo e agilidade.

Nesse sentido, o posicionamento do Project for the web é justamente esse: funcionar como uma alternativa para as organizações que não queiram ser simplistas demais para usar o Planner, e nem formais demais para usar o Project Online.




Como começar?

Se a sua empresa possui uma assinatura do Project Online com pelo menos uma licença Professional ou Premium, o Project for the web já deve estar disponível. Para iniciar um novo projeto, navegue à página Home do Project – https://project.microsoft.com – e inicie um novo projeto em branco:



Na primeira vez que você iniciar um novo projeto em branco, a página de setup será exibida, e você terá de aguardar alguns segundos:



O Project for the web foi desenhado para ser simples: você pode iniciar um novo projeto sem ao menos ter um nome:



Já em relação às colunas, temos uma surpreendente (e radical) mudança: o Project for the web possui apenas 13 colunas:



Se você é um usuário frequente do Project Online, irá perceber a mudança no nome de algumas colunas:


> Predecessoras chama-se Depende de (antes)
> Sucessoras chama-se Dependentes (depois)
> Trabalho chama-se Tempo necessário
> Trabalho Real chama-se Tempo concluído
> Trabalho Restante chama-se Tempo restante

Isso sem falar na nova coluna Grupo, que importou o conceito de ‘Buckets’ do Planner. Aliás, por falar em Planner, se você é um usuário frequente desta plataforma, irá perceber inúmeras semelhanças dele com o Project for the web, principalmente no que se refere ao aspecto visual (design) e interação (usabilidade). Como exemplo, ao clicar com o botão direito do mouse sobre uma tarefa é possível abrir a sua janela de detalhes, que é muito semelhante à janela de detalhes das tarefas do Planner:



Do mesmo modo, caso você já possua um conjunto de tarefas que componham o cronograma, a opção de clicar com o botão direito do mouse permite que uma série de ações sejam tomadas – como exemplo, é possível definir a estrutura das tarefas resumo e das subtarefas:





Seguindo o conceito de construção de um cronograma, ao utilizar a coluna Depende de (antes) para determinar a relação de vínculo entre as tarefas, a digitação do ID da tarefa já faz com que a plataforma apresente também o seu nome, facilitando a escolha do usuário:



Outro tópico importante é que, no Project for the web, não existe a necessidade de se criar uma equipe de trabalho, como acontece no Project Online. Conforme o projeto vai se desenvolvendo, você poderá começar a atribuir pessoas às tarefas:



Um importante ponto a ser observado é que, quando você tenta atribuir uma pessoa que não você próprio a uma tarefa, terá de criar um novo grupo para o seu projeto no Office 365 (ou então associar o projeto a um grupo existente):



Perceba que, ao tentar atribuir o usuário Daniel a tarefa ‘Configurar o ambiente de testes’ a plataforma irá requerer a definição sobre a criação de um novo grupo ou a associação do projeto a um grupo existente:






Design e interface do usuário (user interface)

Além da visão padrão de tabela, onde é possível adicionar e organizar as tarefas, o Project for the web também possui outras duas visões padrão: Quadro e Linha do Tempo. A visão quadro é muito semelhante a que encontramos no Planner (de novo ele), com a organização vertical das tarefas de acordo com um agrupamento específico (Progresso, Bucket ou Data de Vencimento):



Enquanto isso, a visão linha do tempo apresenta as tarefas no formato do velho e bom Gráfico de Gantt, só que agora com um visual bem mais moderno:



Outro item muito interessante do novo design está relacionado à formatação condicional aplicada automaticamente às tarefas, de acordo com o seu vencimento:




O futuro

Como eu havia comentado no início do post, o Project for the web é uma plataforma completamente nova, que não tem em sua fundação nenhum resquício do nosso velho amigo SharePoint, no qual toda a suíte PPM (Project Server e Project Online) foi baseada até hoje. Ainda referenciando aos primeiros parágrafos do post, o Project for the web foi construído sob a plataforma Power Platform, o que irá abrir um mundo completamente novo de possibilidades para integrações, desenvolvimento de soluções, aplicativos e conectores, que poderão tanto consumir como enviar dados para o novo Project. Acessando os bastidores do CDS (Common Data Service) é possível entender como a plataforma está organizada em entidades:



E ao acessar uma entidade específica (neste exemplo projetos) é possível visualizar todas as propriedades e informações sobre os seus registros:




Mas esse será assunto para os próximos posts e vídeos no canal.

Ok, legal... mas, e agora? Qual o impacto disso?

Imagino que, a partir de agora, as organizações irão começar a se perguntar: nós já utilizamos o Project Online como plataforma de apoio ao nosso portfolio de projetos. O que a introdução do Project for the web significa, e como isso irá nos afetar?

Segundo a própria Microsoft, não há motivo para pânico. O Project Online não será descontinuado, e as empresas não irão perder do dia para a noite todo o investimento realizado na plataforma. A princípio, as operações e a gestão do portfolio poderão acontecer normalmente no Project Online, de modo que as organizações poderão ter um tempo para entender melhor o Project for the web, bem como seus recursos, funcionalidades e qual o contexto de sua utilização. Deste modo será possível estruturar um plano para migração gradual do Project Online para o Project for the web, ao mesmo tempo em que novos recursos, funcionalidades, aplicativos, conectores e soluções são introduzidas/adicionadas à plataforma pela Microsoft e/ou parceiros do ecosistema PPM.

Para entender melhor todos os efeitos da introdução do Project for the web, e como se preparar para essa transição no longo prazo, a leitura da documentação abaixo é fundamental:








segunda-feira, 21 de outubro de 2019

Flow e Project Online: enviando uma Solicitação HTTP ao SharePoint

Olá pessoal –

Para fechar o terceiro post da série sobre os gatilhos e conectores nativos do Project Online e Flow, vamos falar hoje sobre a ação Enviar uma solicitação HTTP ao SharePoint. Como vimos nos dois posts anteriores (post1 e post2) o Microsoft Flow possui gatilhos e ações nativas atreladas ao Microsoft Project Online –  entretanto, podemos dizer que infelizmente esses gatilhos e conectores nativos do Flow possuem certas limitações em relação aos recursos disponíveis para as possíveis automações que queiramos configurar.

Para superar essas limitações, uma excelente alternativa é utilizar a ação Enviar uma solicitação HTTP ao SharePoint, que permite a execução de operações básicas como leitura e obtenção de dados de uma interface REST fornecida pelo SharePoint. Como sabemos, o Project Online é baseado em uma estrutura de sites do SharePoint, o que permite que esta ação seja utilizada para que seja possível automatizar as ações no Microsoft Flow. Uma das maiores vantagens da utilização desta ação no contexto do Project Online é que podemos criar consultas para obter praticamente qualquer dado do banco de dados do Project Online, incluindo campos nativos e também campos personalizados. Caso você queira conhecer em mais detalhes as operações básicas usando os pontos de extremidades REST do SharePoint, você pode visitar esse excelente artigo técnico no site da Microsoft.

Temos uma infinidade de casos de uso que poderiam ser utilizados para obtenção dos dados via interface REST: poderíamos criar uma recorrência para coletar informações sobre projetos com problemas, enviando então um e-mail de notificação para um grupo específico; ou poderíamos capturar as informações dos projetos periodicamente, para criar uma análise de tendência; poderíamos também coletar os dados de um projeto recém criado e então gerar um documento (Business Case) automaticamente.... enfim, os cenários e as possibilidades são inúmeras, e eu tenho falado bastante sobre isso no meu canal do YouTube.

Para utilizar a ação na prática, vamos ao Microsoft Flow para construir um exemplo do zero. Selecione uma recorrência como disparador, e então escolha a ação Enviar uma solicitação HTTP ao SharePoint:


A janela contendo as configurações da ação será apresentada:


Em endereço do site, clique no drop-down para selecionar a URL do seu ambiente do Project Online. Caso não a encontre, você também poderá digitá-la, como nesse exemplo: https://<suaempresa>.sharepoint.com/sites/pwa.

O método a ser utilizado será GET, pois desejamos ler/obter os dados do banco de dados do Project Online.

Em Uri poderemos definir a string/consulta que será utilizada para determinar quais os campos a serem obtidos, e também para que seja possível filtrar os projetos. Neste exemplo, estou utilizando a seguinte string:

/_api/ProjectData/[en-us]/Projects()?$Select=ProjectId,ProjectName,ProjectOwnerName,ProjectPercentCompleted&$Filter=ProjectType ne 7

A ideia é obter alguns campos nativos do Project Online (Id do Projeto, Nome do Projeto, Proprietário e Percentual Concluído), filtrando para que o projeto do tipo 7 não seja incluído na consulta. A boa notícia é que você pode incluir campos personalizados existentes no seu ambiente na consulta caso seja necessário.

Em Cabeçalhos nós não estamos definindo um padrão de colunas que devem eventualment ser utilizadas, por isso o resultado/expressão application/json;odata=nometadata:


Como iremos utilizar os resultados da ação nas próximas ações do nosso Flow, é interessante renomear a ação atual para algo mais simples. Eu gosto bastante de usar a expressão GetProjects nesse contexto:


Uma vez construída a ação, você pode rodar o Flow para visualizar os resultados obtidos e validar que tudo está funcionando conforme esperado:


Uma vez validada a ação de obtenção dos dados, você poderá configurar os passos seguintes com os resultados, de acordo com os seus requisitos de negócio – por exemplo, poderia criar uma tabela HTML para melhor estruturar a lista de projetos obtidos. Como você está obtendo dados via extremidade REST, o ideal é não utilizar os resultados obtidos através da função de Conteúdo Dinâmico; pelo contrário, utilize uma Expressão para que seja possível se referenciar aos valores e resultados da ação anterior, utilizando a expressão body('GetProjects')[ 'Value '):


Os resultados poderão ser observados ao rodar o flow:


E a partir daí você poderia estabelecer mais filtros, obter mais campos e então definir as ações seguintes para  configurar a automatização do seu processo, conforme necessário.