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

Deixe um comentário

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

Logo do WordPress.com

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

Foto do Facebook

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

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.