terça-feira, 29 de dezembro de 2020

Retrospectiva 2020

 Olá pessoal –

Hoje decidi reservar um pouco do meu tempo para tirar a poeira e retomar uma tradição que andava esquecida aqui no blog, que é escrever um último post fazendo uma retrospectiva do ano.

De certa forma, parte da inspiração para voltar a escrever uma retrospectiva se deu após ler as publicações de 2019 do Fabrício Lima e do Erick Wendell, então a primeira coisa a fazer é deixar o meu agradecimento público a esses dois caras sensacionais!

Ao escrever essas linhas me pego pensando que todos nós deveríamos pensar seriamente em publicar uma retrospectiva (mesmo que esse “publicar” signifique escrever para nós mesmos e não compartilhar com ninguém): trata-se de uma excelente oportunidade para aproveitar a calmaria do final do ano, respirar um ar fresco e então fazer uma profunda reflexão, olhando para trás e entendendo como foi o ano: pode-se comparar aquilo que foi feito com o que foi planejado; é possível entender com mais clareza quais foram os desafios, as mudanças, os ajustes de percurso e as conquitas; adicionalmente, através do entendimento do que deu certo e do que deu errado, podemos entender um pouco mais sobre nós mesmos, e assim pavimentar o caminho para o ano vindouro.

E que ano foi esse de 2020, não é mesmo?

Certificado em Power BI 📊

O meu 2020 começou acelerado. Antes de dar play nas mini-férias que tiro religiosamente no mês de Janeiro com a família, me propus a fazer o exame para a certificação de Power BI, no qual fui aprovado no dia 02 de Janeiro.


Infelizmente o exame que fiz na época (70-778) será descontinuado em Janeiro de 2021, então terei de refazer o exame esse ano (DA-100) para atualizar a minha certificação. 

Global Power Platform Bootcamp 🌍

Avançando para o mês de Fevereiro, tive a honra de participar do Global Power Platform Bootcamp, um evento global que acontece de maneira simultânea em mais de 40 cidades ao redor do mundo. Como ainda não tínhamos sido afetados pela pandemia, o evento aconteceu presencialmente (a se eu soubesse que esse era o último evento presencial que faria no ano 😕), e tive a honra de dividir o palco com o Renato Romão, um super profissional e grande amigo que a vida da tecnologia me deu. Inclusive, os slides que utilizei em uma das minhas palestras estão disponíveis para serem visualizados/baixados na minha conta do Slideshare.


COVID-19 & MVP Summit 2020 goes online 😷

Daí veio a pandemia... todos fomos afetados de uma maneira inimaginável, em maior ou menor proporção. Falando particularmente da situação aqui em casa, nossa rotina não foi virada do avesso como foi o caso de muitas outras famílias, muito disso porque meu trabalho na Sensei já era realizado de maneira remota há quase 5 anos, e todos estávamos bem adaptados. A principal diferença na nossa rotina foi ter que tentar manter as crianças minimamente ocupadas, principalmente durante os 2 ou 3 primeiros meses, uma vez que o isolamento social completo era a regra vigente. Foram dias difíceis, mas posso afirmar com toda certeza que também foi uma grande oportunidade para que nos aproximássemos mais como família.


No meio desse turbilhão de incertezas, a Microsoft decidiu transformar o MVP Summit em um evento virtual, após quase 2 décadas de eventos presenciais na sede da empresa em Redmond. Como comentei a época, foi um esforço notável de agilidade, eficiência e competência de todo o time envolvido na organização do summit, pois em pouquíssimo tempo conseguiram preparar e realizar o evento de maneira impecável.


Convivendo com a pandemia: home office is the new normal 💻

Uma vez estabelecida a pandemia e todas as restrições de circulação que ela nos impôs, as empresas e as pessoas tiveram que se reinventar para aprender a tocar a vida (e também os negócios) de casa, incluindo a convivência com filhos e agregados (cachorro, gato, papagaio, vizinhos e etc.). Nesse contexto todos os eventos passaram para o digital, e assim tive a oportunidade de participar como palestrante ou organizador de vários iniciativas, as quais vale a pena destacar:

PMISP Talks: no mês de Junho fui convidado pelo pessoal do capítulo Vale do Paraíba do PMI para sua sessão de palestras e debates chamado “PMISP Talks”. O tema da minha sessão foi Gestão do trabalho, projetos e equipes com o apoio das plataformas Microsoft 365, e foi muito legal toda a receptividade do pessoal do PMI, assim como das pessoas que participaram do evento.

Semana solidária Microsoft: logo em seguida tivemos a Semana solidária Microsoft, que teve toda a arrecadação doada para diferentes instituições de caridade no Brasil.

Project Management Saturday: também tive a oportunidade de participar do Project Management Saturday, um evento gringo dedicado exclusivamente à plataformas de gerenciamento de projetos. Nesse evento, entreguei a palestra Portfolio Governance and Compliance in Project Online: why does it matter and how to implement it?

Excel Virtually Global: outro evento gringo que tive a honra de participar foi o Excel Virtually Global, que foi organizado pelos MVPs de Excel baseados na Austrália. Assim como aconteceu com a semana solidária Microsoft, toda a arrecadação do evento foi destinada a causas sociais – minha sessão foi intitulada Creating dashboards in Excel with data from Microsoft Project.

SQL Saturday: voltando aos eventos realizados em terras tupiniquins, em Outubro dividi a tela com o grande André Xavier, onde falamos sobre como criar um relatório de tendências no Project Online com Power Automate, CDS e Power BI.

M365 Dev Bootcamp: depois disso, ainda com o meu camarada André Xavier, participei do evento Microsoft 365 Development Bootcamp, falando sobre como realizar a integração entre o Project Online e o Azure DevOps via do Power Automate.

MVP Conf 2020: fechando o ciclo de eventos, em Dezembro pude entregar 6 palestras no MVP Conf 2020, simplesmente o maior evento para profissionais de tecnologia de todo o Brasil. Em 2020, o MVP Conf bateu todos os recordes de inscritos, arrecadação e número de palestras, algo que dá muito orgulho a todos os envolvidos.


MVP Renovado (2016-2021) 🏆

No meio de tudo isso, em Julho recebi uma das melhores notícias do ano: meu título de MVP havia sido renovado, garantindo assim meu quinto ano consecutivo sendo reconhecido como um profissional mais valioso pela maior empresa de software do mundo!


YouTube & Blog 🎬

Como é possível perceber, este não foi um ano tão bom em relação ao número de postagens aqui no blog. De certa maneira, acabei me dedicando mais ao meu canal no YouTube, e o resultado foi que bati um recorde negativo: 2020 foi o ano com o menor número de postagens desde de que o blog surgiu, em 2011 😟. Este é um ponto negativo que pretendo corrigir em 2021, mas é preciso ser vigilante para não postar muito (quantidade) e não falar nada (qualidade)... então aqui a meta será procurar um ponto de equilíbrio, onde possa manter uma boa regularidade de postagens, sempre incluindo um bom conteúdo técnico.

Já em relação ao meu canal no YouTube, estou bastante satisfeito tanto com relação à regularidade quanto com a qualidade dos vídeos e temas abordados. Nesse ano tive a oportunidade de realizar colabs com grandes amigos e profissionais de alto gabarito, que doaram um pouco do seu tempo para acrescentar muito conteúdo e informações relevantes com a audiência que acompanha as publicações aqui no canal. Passaram por aqui em 2020:

- O mestre do Power BI, Leonardo Karpinski

- O maior produtor de conteúdo técnico do YouTube no Brasil, Alessandro Trovato

- O mago da Power Platform, Renato Romão

Para o ano que vem, a ideia é aumentar o nível de colabs e trazer mais profissionais de diferentes áreas para compartilhar seu conhecimento por aqui.

Para não quebrar a tradição... vamos aos números! 📈

Claro que não poderíamos quebrar a tradição, então vamos ver o que rolou aqui no blog e também no canal do YouTube em 2020. Este ano, contando apenas o blog, 59.930 pessoas passaram por aqui, gerando um total de 90.210 visualizações de página:


Já no canal do YouTube tivemos um total de 317 mil visualizações em 2020, com mais de 4 mil novos inscritos:

Vida pessoal

Em termos pessoais, apesar do confinamento pelo qual ainda estamos passando, tudo correu bem. O ponto principal e mais importante é que estamos todos com saúde. Procurei não me deixar abater pela pandemia, e mantive minha rotina de trabalho, estudo e exercícios físicos. Se fosse para fazer um resumão, seria o seguinte:

Pontos negativos

  • Não li os livros que havia planejado
  • Não obtive duas das três certificações que havia colocado como meta no início do ano

Pontos positivos

  • Iniciei os estudos para aprender um terceiro idioma (espanhol) com a Gleicy Migliorini
  • Comecei a correr, mantive uma certa regularidade e bati a meta de chegar no final do ano correndo 10 quilômetros


O que vem por aí? 🔜

Eu imagino que os desafios para 2021 serão enormes, e pretendo estar preparado para eles. Penso inclusive que, de uma forma talvez até inconsciente, esse texto está sendo escrito hoje para que, ao longo do próximo ano, eu possa revisitá-lo e então relembrar quais são as minhas metas, os meus objetivos e, por que não, os compromissos assumidos para o novo ano que está prestes a ser iniciado.

De modo geral, vou deixar públicas algumas metas para 2021, e aí quando chegar em Dezembro poderei fazer um balanço:

Metas pessoais

  • Ler ao menos 4 livros
  • Continuar estudando e melhorar o meu desenvolvimento no idioma espanhol
  • Manter a rotina de corridas e de exercícios físicos

Metas profissionais

  • Publicar ao menos 24 posts no blog com excelente conteúdo técnico
  • Publicar ao menos 48 vídeos no meu canal no YouTube
  • Obter ao menos 3 novas certificações relacionadas à minha atividade profissional

Em resumo é isso... se você chegou até aqui, imagino que também esteja tirando um tempo para fazer uma reflexão sobre o seu ano, e que também esteja pensando no planejamento para 2021. Espero que, dentro da atual conjuntura, você tenha tido um bom 2020, e que esteja preparado(a) para entrar em 2021 com o pé no acelerador. Vamos fazer valer a pena. 

Um forte abraço!


quinta-feira, 1 de outubro de 2020

Usando variáveis para popular campos personalizados no Project Online via Power Automate

Olá pessoal –

Este é o quarto post em sequência que estou fazendo sobre as diferentes possibilidades para popular campos do Project Online através do Power Automate (tanto campos nativos quanto campos personalizados). Caso você esteja chegando aqui no blog agora, sugiro seguir a trilha abaixo:

1. Atualizando campos nativos no Project Online via Power Automate

2. Atualizando campos personalizados no Project Online via Power Automate (texto livre)

3. Atualizando campos personalizados no Project Online via Power Automate (tabela de pesquisa)

Conforme vimos no último post, para popular campos que são baseados em uma tabela de pesquisa é preciso capturar o Id interno de cada uma das opções disponíveis na tabela, passando então esse parâmetro para o Power Automate. Uma dúvida que fica é: como configurar o flow para popular o campo personalizado no Project Online a depender de um valor que tenha sido escolhido previamente pelo usuário no sistema de origem?

O cenário

Para exemplificar, imagine o seguinte cenário: uma determinada empresa precisa popular um campo personalizado chamado Project KPI, que é baseado em uma tabela de pesquisa contendo três opções: On Track, On Watch e Troubled. O valor a ser populado para cada projeto será controlado em um sistema externo (nesse exemplo usaremos uma lista do SharePoint, entretando poderíamos estar falando de qualquer outro sistema), que é quem deve fornecer os valores a serem automaticamente inseridos no Project Online através do flow.

Configurando o flow

Para configurar o flow a atender esse cenário, a estratégia recomendada é trabalhar com uma variável que possa ser definida de acordo com o resultado obtido do sistema externo. Essa abordagem é adequada porque o código interno de cada valor da tabela de pesquisa é diferente de um para o outro, e assim o valor da variável pode ser definida apenas quando soubermos o valor a ser aplicado para cada projeto individualmente.

Na imagem abaixo temos um exemplo de 5 projetos e seus respectivos status na lista do SharePoint:


O primeiro passo é capturar o Id interno do campo a ser populado. No meu caso, o Id interno do campo é f51e4d4e-fd43-e711-80ce-00155d38bd21:


Em seguida é preciso capturar os Ids internos de cada uma das opções disponíveis na tabela de pesquisa que alimenta o campo. No meu caso, os valores são:

On Track = ba2dc508-fd43-e711-80d7-00155d3ce811

On Watch = bb2dc508-fd43-e711-80d7-00155d3ce811

Troubled = bc2dc508-fd43-e711-80d7-00155d3ce811

Uma vez capturadas as informações que serão utilizadas como entrada no flow, poderemos criá-lo no Power Automate. Neste exemplo, o flow será configurado para rodar periodicamente. Em seguida, as informações de status serão obtidas da lista do SharePoint e então uma nova variável será iniciada:


Então, para cada valor obtido da lista do SharePoint, um conjunto de ações deve ser aplicado. Em primeiro lugar, é preciso encontrar o projeto correspondente no Project Online e colocá-lo em check-out (lembrando que, em um contexto mais avançado, seria necessário primeiro verificar se o projeto está em check-in para só então efetuar o check-out):


Uma vez que o projeto esteja em check-out será preciso definir o valor da variável, de acordo com o status oriundo da lista do SharePoint. Para isso é preciso utilizar a ação de controle Switch, que permite a definição de uma ação de acordo com o valor de uma determinada propriedade. Iremos selecionar como entrada a propriedade Project Status, e no primeiro case iremos compará-la com o texto “On Track”:


Caso para esse projeto o valor da propriedade Project Status seja On Track, então a variável deverá ser definida com o respectivo código (ba2dc508-fd43-e711-80d7-00155d3ce811). Para isso, basta adicionar uma ação nesse case que defina o valor da variável:


E assim será possível criar cases adicionais, de acordo com a quantidade de respostas possíveis:


Uma vez definido o valor da variável poder-se-à criar a ação para atualizar o campo personalizado no Project Online:


Para finalizar, não se esqueça de adicionar a ação para publicar o projeto e fazer o seu check-in.

Espero que ajude


quarta-feira, 23 de setembro de 2020

Atualizando campos personalizados (tabela de pesquisa) no Project Online via Power Automate

Olá pessoal –

Este é o terceiro post da série onde estamos falando sobre como atualizar campos no Project Online através do Power Automate. No post de estréia falamos sobre como atualizar o campo nativo Nome do Projeto, enquanto que no segundo post falamos sobre como atualizar um campo personalizado de digitação livre.

Atualizando campos personalizados baseados em uma tabela de pesquisa

Conforme discutido no segundo post da série, quando precisamos atualizar um campo personalizado no Project Online é preciso especificar o campo a ser populado, através da declaração do seu nome interno.

Se o campo personalizado for do tipo digitação livre, então basta inputar o seu valor livremente na propriedade Value através do script. Porém, se o campo personalizado for baseado em uma tabela de pesquisa, então o input livre do valor não é suportado, sendo necessário não só declarar o nome interno do campo como também o código interno da propriedade que é representada pelos valores da tabela de pesquisa.

Convertendo isso para um cenário do mundo real: suponha que você possua um campo personalizado chamado Project Phase, o qual está associado a uma tabela de pesquisa chamada Project Phase. Você precisa que o Power Automate seja capaz de popular o campo, definindo o seu valor para uma das opções disponíveis na tabela de pesquisa (digamos que o valor desejado seja ’01 – Initiation’).

Nesse sentido, você precisará acessar a tabela de pesquisa e então selecionar o item que deseja utilizar. Ao fazer isso, o Id interno dessa propriedade na tabela de pesquisa será exibida:


Assim você poderá configurar todo o script de atualização do campo, incluindo a referência do código interno do campo personalizado e também da propriedade a ser inputada, com base na tabela de pesquisa:


Abaixo as intruções completas que foram utilizadas no processo de atualização:

……………………………………………………………………….

Site Address: Utilize a URL do seu PWA

Method: POST

Uri: _/api/ProjectServer/Projects(' <Id do projeto> ')/Draft/UpdateCustomFields

Headers:

Content-Type | application/json;odata=nometadata

IF-MATCH | *

X-HTTP-Method | POST

Body:

{

"customFieldDictionary":[

{

"Key":"Custom_<nome interno do campo personalizado>",

"Value":"<código interno da propriedade da tabela de pesquisa>",

"ValueType":"Edm.String"

}

]

}

……………………………………………………………………….

Lembrando que os items destacados em amarelo devem ser substituídos pelos seus respectivos valores.

Por fim, a última ação deverá publicar o projeto e efetuar o check-in, para garantir que todas as atualizações ocorram de maneira adequada.

Espero que ajude!


segunda-feira, 14 de setembro de 2020

Atualizando campos personalizados (texto livre) no Project Online via Power Automate

 Olá pessoal –

Este é o segundo post de uma nova série aqui no blog onde vamos falar sobre como atualizar campos no Project Online através do Power Automate. No post de estréia falamos sobre como atualizar o campo nativo Nome do Projeto.

Atualizando campos personalizados do tipo texto livre

Pegando carona no cenário proposto no primeiro post da série, vamos introduzir hoje uma pequena modificação para que seja possível adequar o nosso flow:

  • Ao invés de combinar o código SAP com o nome do projeto, o Power Automate deverá manter o nome do projeto inalterado, populando o código SAP em um campo personalizado criado exclusivamente para receber essa informação

Abaixo um exemplo do flow que foi criado no Power Automate, contendo todas as principais ações:


Em resumo, a essência do novo flow é exatamente a mesma do anterior – então, caso você não tenha lido o post, certifique-se de voltar uma casa e se familiarizar com o conjunto de ações aplicadas.

A única mudança que iremos aplicar nesse caso acontecerá na ação Send an HTTPS request to SharePoint, pois para que seja possível popular um campo personalizado no Project Online o método a ser utilizado será diferente (POST ao invés de PATCH), assim como o script a ser inserido no corpo. Além disso, como na instrução precisamos especificar qual o campo personalizado a ser populado, é preciso declarar o seu nome interno (nome de sistema) para que a ação seja realizada.

Para descobrir qual o nome interno do campo personalizado, no Project Online, clique em Configurações do PWA > Campos Personalizados e Tabelas de Pesquisa. Clique no nome do campo personalizado e navegue até a área Dados de Identificação do Sistema:


Assim você poderá configurar todo o script de atualização do campo:


Abaixo as intruções completas que foram utilizadas no processo de atualização:

……………………………………………………………………….

Site Address: Utilize a URL do seu PWA

Method: POST

Uri: /_api/ProjectServer/Projects(' <Id do projeto> ')/Draft/UpdateCustomFields

Headers:

Content-Type | application/json;odata=nometadata

IF-MATCH | *

X-HTTP-Method | POST

Body:

{

"customFieldDictionary":[

{

"Key":"Custom_<nome interno do campo personalizado>",

"Value":"<campo da lista do SharePoint>",

"ValueType":"Edm.String"

}

]

}

……………………………………………………………………….

Lembrando que os items destacados em amarelo devem ser substituídos pelos seus respectivos valores.

Por fim, a última ação deverá publicar o projeto e efetuar o check-in, para garantir que todas as atualizações ocorram de maneira adequada.

Espero que ajude!


quarta-feira, 26 de agosto de 2020

Atualizando campos nativos no Project Online via Power Automate

 Olá pessoal –

No meu canal no YouTube tenho procurado explorar diferentes cenários de integração do Power Automate com o Project Online, com o objetivo de otimizar e automatizar alguns processos de gerenciamento de projetos que são executados no contexto da solução PPM da Microsoft. É importante lembrar que aqui no blog também há vários posts que complementam os vídeos.

Com base no aprendizado que venho obtendo ao explorar cada um dos cenários, e depois de bater muito a cabeça para descobrir como as coisas se encaixam, resolvi publicar aqui no blog algumas das lições aprendidas durante a jornada, para que fique registrado (caso eu precise pesquisar novamente no futuro 😊) e também para ajudar alguém que eventualmente precise fazer algo parecido.

Nesse sentido pretendo publicar, ao longo das próximas semanas, uma série de posts que contemplem diferentes formas de integração entre o Power Automate e o Project Online.

Atualizando campos nativos: nome do projeto

O primeiro post dessa sequência irá explorar como atualizar campos nativos do Project Online com o Power Automate – no exemplo de hoje iremos atualizar o campo Nome do Projeto. O cenário proposto é o seguinte (inclusive há um vídeo no meu canal no YouTube falando sobre algo muito parecido):

  • Uma determinada empresa possui códigos internos para os projetos, que são gerados no SAP (mas que poderiam ser gerados em qualquer outro sistema)

  • Uma vez gerados os códigos internos, esses são enviados para uma lista do SharePoint

  • Quando um novo projeto for criado no Project Online, o Power Automate deverá pesquisar por esse projeto na lista do SharePoint, para então atualizar o nome do projeto adicionando o número SAP como prefixo (ou seja, combinando o número SAP com o nome com o qual o projeto foi originalmente cadastrado).

É importante ressaltar que esse é um exemplo baseado em um cenário hipotético, com fins meramente ilustrativos. O ideal é que você possa absorver os conceitos e então aplicá-los, ajustando-os conforme as necessidades específicas.

Abaixo um exemplo do flow que foi criado no Power Automate, contendo todas as principais ações:


Em resumo, temos:

1. O gatilho utilizado foi ‘When a new project is created’’. Em seguida estou usando uma ação ‘Delay until’ para pausar o flow por alguns minutos. Como esse é um exemplo para fins didáticos, podemos dizer que é ok, mas é evidente que não poderia ser aplicado em um ambiente produtivo. No mundo real, o mais adequado seria aguardar até que o check-in do projeto fosse efetuado, para termos a garantia de que o criador do projeto preencheu todos os campos e saiu efetivamente do projeto, liberando-o para ser modificado pelo flow

2. Na ação seguinte estou obtendo a lista de projetos cadastrados na lista do SharePoint, filtrando o título dos itens para obter apenas o registro que seja igual ao projeto que acabou de ser criado no Project Online


3. Então, para cada item encontrado na lista do SharePoint, teremos de efetuar o check-out do projeto. Vale reiterar, uma vez mais, que como esse exemplo trata apenas de fins didáticos, estou pulando algumas etapas. Mas se fóssemos considerar o mundo real seria preciso validar se o projeto encontra-se em check-in antes de prosseguir com a ação de efetuar o check-out

4. Daí é que vem o pulo do gato: para atualizar um campo nativo do Project Online (nesse caso, o campo Nome do Projeto), precisaremos fazer uma requisição HTTPS para o SharePoint (falei sobre isso aqui e aqui). Ao fazer a requisição, o método a ser utilizado é o PATCH, onde a variável [ProjectId] é fornecida para que o Power Automate tenha condições de encontrar o projeto correto e realizar sua atualização


Caso você queira aprender mais sobre requisições HTTPS no Project Online, poderá consultar esse link.

Abaixo as intruções completas que foram utilizadas no processo de atualização:

……………………………………………………………………….

Site Address: Utilize a URL do seu PWA

Method: PATCH

Uri: /_api/ProjectServer/Projects(' <Id do projeto> ')/Draft/

Headers:

Content-Type | application/json;odata=nometadata

IF-MATCH | *

Accept | application/json;odata=nometadata

Body:

{

"Name":" <campo da lista do SharePoint> - <nome do projeto> "

}

……………………………………………………………………….

Lembrando que os items destacados em amarelo são os campos obtidos nas ações anteriores do flow.

Por fim, a última ação deverá publicar o projeto e efetuar o check-in, para garantir que todas as atualizações ocorram de maneira adequada.

Espero que ajude!