O Customer Service Hub cobre o atendimento. Mas e o técnico em campo que precisa ver os casos no celular? E a recepção que quer uma tela simples para registrar chamados sem abrir o CRM inteiro? O Power Apps resolve isso — uma interface personalizada, conectada ao mesmo Dataverse, em qualquer dispositivo.
Ao final, você terá um Canvas App com duas telas: uma lista de casos do Dynamics com busca e filtro de prioridade, e uma tela de detalhe que mostra os dados completos de cada caso — rodando no navegador e no celular.
Nesta lição criamos um Canvas App — o tipo que você desenha. As lições seguintes cobrem a integração avançada com Dataverse e a publicação para usuários.
make.powerapps.com+ Create → Canvas app from blankPortal de Casos — SuportePhone (formato vertical, funciona em celular e web)O editor do Power Apps abre com uma tela em branco. À esquerda, o painel de telas e componentes. Ao centro, o canvas. À direita, as propriedades do elemento selecionado. Na barra superior, a barra de fórmulas — onde toda a lógica vive.
Data → + Add dataDataverseMicrosoft DataverseCasesA tabela Cases agora está disponível como fonte de dados. Toda vez que o app precisar de dados dos casos, ele vai buscar diretamente no Dataverse do seu ambiente Dynamics.
Insert → Gallery → VerticalCom a gallery selecionada, configure no painel direito:
Filter(Cases, statuscode = 1, IsBlank(SearchInput.Text) Or StartsWith(title, SearchInput.Text))Esse filtro mostra apenas casos ativos (statuscode = 1) e filtra pelo texto digitado na busca.
Filter() filtra uma tabela, StartsWith() verifica se o texto começa com a busca, IsBlank() verifica se o campo está vazio. Se você conhece Excel, a curva de aprendizado é pequena.Dentro da gallery, cada linha tem um template com os componentes que se repetem. Configure:
ThisItem.titleIf(ThisItem.prioritycode = 1, "Alta", If(ThisItem.prioritycode = 2, "Normal", "Baixa"))If(ThisItem.prioritycode = 1, RGBA(239,68,68,0.15), If(ThisItem.prioritycode = 2, RGBA(91,141,239,0.15), RGBA(139,150,172,0.1)))
ThisItem se refere ao registro atual da linha sendo renderizada — como o "linha atual" de um loop. Cada linha usa o mesmo template mas com os dados do seu próprio registro.Insert → Input → Text inputSearchInput"🔍 Buscar casos..."""A gallery já está usando SearchInput.Text na fórmula Filter — então a busca já funciona automaticamente ao digitar.
+ New screen → BlankDetalheScreenNa propriedade OnSelect de cada linha da gallery (na Tela 1):
Navigate(DetalheScreen, ScreenTransition.Cover, {SelectedCase: ThisItem})Na tela de detalhe, adicione Labels para cada campo:
SelectedCase.titleSelectedCase.'Customer Name'If(SelectedCase.prioritycode=1,"🔴 Alta","🟡 Normal")SelectedCase.descriptionText(SelectedCase.createdon, "dd/mm/yyyy")
SelectedCase em toda a DetalheScreen. Não é necessário buscar o registro novamente — ele já foi passado na navegação.Insert → Icon → Back arrowBack()Salve o app (Ctrl+S) e teste no modo preview (F5 ou botão ▶ no topo). Clique em um caso da lista — a tela de detalhe deve abrir com os dados corretos.
File → Save → PublishFile → ShareO app publicado fica disponível em make.powerapps.com → Apps e também no aplicativo Power Apps para iOS e Android. Os usuários acessam com a conta Microsoft 365 deles — sem precisar instalar nada além do app Power Apps.
Power Fx é a linguagem de fórmulas do Power Apps. Se você já usou Excel, já conhece a base: funções como If(), Filter(), Sort(), Concatenate(). A diferença é que aqui as fórmulas se conectam a dados reais no Dataverse em tempo real.
Filter(Cases, prioritycode = 1) — filtra alta prioridadeSort(Cases, createdon, Descending) — ordena por dataPatch(Cases, LookUp(Cases, caseid = varId), {title: txtTitulo.Text}) — atualiza um registroCollect(varCasos, Filter(Cases, ownerid = User().Email)) — coleta em variável local
Na Lição 26 você vai explorar o Patch() — a função que cria e atualiza registros no Dataverse diretamente do app, sem precisar do Power Automate.