CRM – Developer Extensions – Plugins (CRM 2011, 2013, 2015 e 2016)

Pessoal,

Seguindo o meu post sobre o acelerador Dynamics CRM Developer Extensions, irei escrever um artigo de como criar, registrar e executar um plugin usando o Developer Extensions.

Temos como pré requesitos:

  • Visual Studio 2012 ou superior;
  • Dynamics CRM 2011 ou superior;
  • Dynamics CRM Developer Extensions (Pesquisar por “Dynamics CRM Developer Extensions” no Visual Studio Gallery)

Com os pré requisitos ajustados, vamos ao Visual Studio…

Crie um novo projeto, selecione “CRM Developer Extensions”, depois “CRM Plug-in Project”, altere o nome do projeto se desejar:

vscrm2015_plugin1

Agora devemos escolher a versão do CRM que este projeto usará:

devext

Precisamos criar nosso plugin. Clique com o botão direito em cima do nome do projeto, depois em “Add” > “CRM Plug-in Class…”:

vscrm2015_plugin2

 

Defina um nome para o plugin, neste exemplo irei fazer uma lógica que caso o Cliente Potencial (lead) for Qualificado, seja integrado com um outro sistema e uma tarefa seja criada no CRM. É só um exemplo de algo que pode ser feito, as regras sempre serão de acordo com cada necessidade.

vscrm2015_plugin3

Automaticamente, são adicionadas as DLLs do CRM, bem como uma estrutura de codificação. Veja a classe “Lead” tem como Base a interface “IPlugin”, assim, nossa classe é “obrigada”a fazer um override do método “Execute”. Além disso, também foi criada uma chave fortemente tipada “MyKey.snk” que permite o plugin ser registrado no CRM:

vscrm2015_plugin4

 

Dentro do método Execute é onde devemos adicionar nossa lógica, note que já foi recuperado o trace (tracer), contexto (context), serviço CRM (service) e entidade do contexto (entity).

Neste nosso exemplo de qualificar um lead, não teremos uma “entidade target” no contexto, pois a mensagem “QualifyLead” não possui esta informação, usaremos apenas o Id do Cliente Potencial (LeadId), assim, caso for necessário, podemos recuperar qualquer informação adicional utilizando o comando “Retrieve”.

Basicamente fiz uma chamada a um serviço externo ao CRM, e caso retorno “true” eu crio uma tarefa no CRM relacionada com o Cliente Potencial:

public void Execute(IServiceProvider serviceProvider)
{
    ITracingService tracer = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
    IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
    IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
    IOrganizationService service = factory.CreateOrganizationService(context.UserId);

    try
    {
        // Verify if context has LeadId and if is an EntityReference
        if (context.InputParameters.Contains("LeadId") && context.InputParameters["LeadId"] is EntityReference)
        {
            EntityReference leadReference = (EntityReference)context.InputParameters["LeadId"];
            Guid leadId = leadReference.Id;
                    
            MyIntegrarion integration = new MyIntegrarion();

            // If the Integration work's. Create a new task
            if (integration.MyMethod(leadId))
            {
                Entity task = new Entity("task");
                task["subject"] = "Lead Qualify - Do contact";
                task["scheduledstart"] = DateTime.Now.AddDays(1);
                task["scheduledend"] = DateTime.Now.AddDays(7);
                task["regardingobjectid"] = new EntityReference("lead", leadId);

                // Create Task
                service.Create(task);
            }
        }
    }
    catch (Exception e)
    {
        throw new InvalidPluginExecutionException(e.Message);
    }
}

Compile o projeto no VS e abra o Plugin Registration, faça sua conexão com o CRM e clique em Register > Register New Assembly:

vscrm2015_plugin5

 

Informe a DLL do seu projeto de plugin que foi gerado na compilação, mantenha as demais configurações da forma que estão e registre o plugin. PS: se estiver usando a versão 2013 o 2015 do SDK, terá que navegar através do “tab”, assim que ultrapassar a opção “GAC” aperte “Enter”):

vscrm2015_plugin6

Agora precisamos adicionar um “step”. Step é quando o plugin será executado. Clique com o botão direito em cima do plugin e depois “Regiter New Step”:

vscrm2015_plugin7

Em nosso exemplo, informe na “Message” o valor “QualifyLead” e “Primary Entity” o valor “Lead”, as demais informações mantenha da forma que está. Por fim, clique em “Register New Step”:

vscrm2015_plugin8

Pronto, foi criado e registrado o plugin, basta agora testar, abra ou crie um Cliente Potencial e clique no botão “Qualificar”, você será redirecionado para uma oportunidade, volte para a tela do Cliente Potencial e veja a tarefa que foi criada, clicando em “Atividades”:

vscrm2015_plugin9

Para visualizar um exemplo da própria Microsoft, acesse:

https://msdn.microsoft.com/en-us/library/gg594416.aspx

[]’s,

Tiago Cardoso

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