CRM 4 – Revoke Access

Citando uma outra aplicação da ótima solução encontrada por Alberto Gemin, criarei este post, na verdade irei comentar o RevokeAccess (remover o acesso de registros compartilhados).

Pois em alguns momentos necessitamos compartilhar registros no CRM, porém o momento da remoção sempre é complicado, as vezes desejamos remover a permissão de usuário/equipe A, mas do usuário/equipe B não, ou ainda gerir este nível de permissão programaticamente, ou seja, através de codificação seja em uma importação de dados ou outra utilização.

Para remover acesso a um registro, necessitamos de dois métodos:

// Retorna uma lista contendo todos os objetos relacionados ao registro informado
private PrincipalAccess[] GetPrincipals()
{
    TargetOwnedDynamic target = new TargetOwnedDynamic();
    target.EntityName = NOME_ENTIDADE;
    target.EntityId = ID_DO_REGISTRO_QUE_DESEJA_REMOVER_O_COMPARTILHAMENTO;

    RetrieveSharedPrincipalsAndAccessRequest retrieve = new RetrieveSharedPrincipalsAndAccessRequest();
    retrieve.Target = target;
    RetrieveSharedPrincipalsAndAccessResponse retrieved = (RetrieveSharedPrincipalsAndAccessResponse)SEU_WEB_SERVICE.Execute(retrieve);

    return retrieved.PrincipalAccesses;
}

// Remove todos os objetos relacionados ao registro informado
// ***Aqui poderiamos inserir qualquer regra de negócio desejada***
private void RemovePrincipals(PrincipalAccess[] principals)
{
    TargetOwnedDynamic target = new TargetOwnedDynamic();
    target.EntityName = NOME_ENTIDADE;
    target.EntityId = ID_DO_REGISTRO_QUE_DESEJA_REMOVER_O_COMPARTILHAMENTO;

    RevokeAccessRequest request = new RevokeAccessRequest();
    request.Target = target;
    foreach (PrincipalAccess principal in principals)
    {
        request.Revokee = principal.Principal;
        RevokeAccessResponse response = (RevokeAccessResponse)SEU_WEB_SERVICE.Execute(request);
    }
}

Com isso em mãos podemos realizar diversas funcionalidades, criando plugins e workflows customizados com ótimo controle as permissões.

Vale a dica…

Anúncios

Sobre Tiago Michelini Cardoso

I have been working with IT since 2006, almost of this time using Microsoft Dynamics CRM/365 as a source of solutions. I graduated in Bachelor of Information Systems at FIAP (Brazil) in 2012. I really love what I do! Technology has been my interest since always. Even in a tool different world of the current. When we didn't have internet, tablets, smartphones e social networks! Although I have worked in some roles, I can't give up "the developer life". Even so far of the greatest developers. Development in general is the thing that I love to work! I started my contributions about Dynamics in 2010. At the beginning, I used to help at MSDN and TechNet forums. But now, I'm dedicating all my time in my personal blog! Currently, I have the enormous honour of being the only Brazilian who got the award for Microsoft MVP (Most Valuable Professional) for Microsoft Dynamics CRM/365 product. I have been receiving the award since 2012.
Esse post foi publicado em Dynamics CRM e marcado . Guardar link permanente.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s