Olá querido leitores!
Hoje vou apresentar para vocês uma dica bem bacana que eu acho que será bem útil para quem tem alguma implementação do Dataverse/Dynamics 365 onde tem vários Model-Driven Apps e precisa que algumas regras sejam somente aplicadas especificamente no aplicativo.
Em um projeto em que estou atuando, surgiu a necessidade de regras de negócio serem realizadas especificamente para um Model-Driven App e também que alguns dados não poderiam ser visíveis para quem estivesse acessando o APP, mesmo o usuário tendo acesso de leitura na tabela.
E ai veio desafio! Como identificar que um Retrieve,RetrieveMultiple,Create ou até mesmo outra mensagem foi disparada quando estivesse com o Model-Driven App aberto?
Após algumas pesquisas e debugs, consegui achar aonde a informação é disponibilizada para ser validada e utilizada no Plugin. No pipeline de execução do plugin no evento de Pre-Validate, dentro do “InputParameters” temos um parâmetro chamado “x-ms-app-name” nele vem o nome lógico da aplicação em que o plugin esta sendo executado.
A informação somente vem nesse momento, se você validar em um Pre-Operation ou Post-Operation essa informação não fica disponível. Para enviar essa informação para o outros plugins realizei o uso do shared variables compartilhando então este valor, e dessa forma eu consigo aplicar as regras para o app especifico.
Espero que essa dica possa ser útil em seus projetos! Forte Abraço!