Microsoft Dynamics CRM - Guia Rápido

Customer Relationship Management (CRM) é um sistema para gerenciar as interações de uma empresa com clientes atuais e futuros. Geralmente envolve o uso de tecnologia para organizar, automatizar e sincronizar vendas, marketing, atendimento ao cliente e suporte técnico. O CRM pode ajudar a reduzir custos e aumentar a lucratividade, organizando e automatizando processos de negócios que nutrem a satisfação e a fidelidade do cliente.

Microsoft Dynamics CRM

O Microsoft Dynamics CRM é um pacote de software de gerenciamento de relacionamento com o cliente desenvolvido pela Microsoft com foco em melhorar o relacionamento com o cliente para qualquer organização. Fora da caixa, o produto se concentra principalmente nos setores de Vendas, Marketing e Atendimento ao Cliente, embora a Microsoft tenha feito o marketing do Dynamics CRM como uma plataforma XRM e tenha incentivado os parceiros a usar sua estrutura proprietária (baseada em .NET) para personalizá-la. Nos últimos anos, também cresceu como uma plataforma analítica impulsionada por CRM.

A solução de CRM pode ser usada para impulsionar a produtividade de vendas e eficácia de marketing de uma organização, lidar com a cadeia completa de suporte ao cliente e fornecer insights sociais, inteligência de negócios e muitas outras funcionalidades e recursos prontos para uso. Como produto, o Microsoft Dynamics CRM também oferece suporte móvel completo para o uso de aplicativos de CRM em celulares e tablets.

No momento em que escrevemos este tutorial, a versão mais recente do CRM é o CRM 2016. No entanto, neste tutorial, usaremos a versão online do CRM 2015, pois é a versão estável mais recente, além de ser usada com frequência em muitas organizações. No entanto, mesmo se você estiver usando qualquer outra versão do CRM, todos os conceitos do tutorial ainda serão válidos.

Ofertas de produtos

O Microsoft Dynamics CRM é oferecido em duas categorias -

CRM Online

O CRM Online é uma oferta baseada na nuvem do Microsoft Dynamics CRM, em que todos os processos de back-end (como servidores de aplicativos, configurações, implantações, bancos de dados, licenciamento, etc.) são gerenciados em servidores Microsoft. O CRM Online é uma oferta baseada em assinatura, preferida para organizações que não desejam gerenciar todos os aspectos técnicos envolvidos em uma implementação de CRM. Você pode começar a configurar seu sistema em alguns dias (não semanas, meses ou anos) e acessá-lo na web por meio de seu navegador.

CRM On-Premise

O CRM no local é uma oferta mais personalizada e robusta do Microsoft Dynamics CRM, em que o aplicativo e os bancos de dados de CRM serão implantados em seus servidores. Esta oferta permite que você controle todos os seus bancos de dados, personalizações, implantações, backups, licenciamento e outras configurações de rede e hardware. Geralmente, as organizações que desejam uma solução de CRM personalizada preferem a implantação local, pois ela oferece melhores recursos de integração e personalização.

Do ponto de vista funcional, ambas as ofertas oferecem funcionalidades semelhantes; no entanto, eles diferem significativamente em termos de implementação. As diferenças estão resumidas na tabela a seguir.

CRM Online CRM On-Premise
Esta é uma solução baseada em nuvem fornecida pela Microsoft na qual todos os servidores e bancos de dados são gerenciados pela Microsoft. Esta é uma solução local fornecida pela Microsoft na qual os servidores e bancos de dados são gerenciados pelo cliente.
Você pode começar com uma oferta online em questão de dias. Você paga pelos usuários e pelo espaço usado em trânsito. A configuração de uma oferta local requer habilidades técnicas, bem como tempo suficiente para configurar a instância de CRM e colocá-la em execução.
Suporta relativamente menos personalizações e extensões. Ele suporta relativamente mais personalização e extensões.
O CRM Online não oferece a capacidade de executar opções manuais de backup e restauração de dados, uma vez que o banco de dados está hospedado em servidores Microsoft. No entanto, a Microsoft realiza backups diários do banco de dados. O CRM no local oferece total capacidade de gerenciar seu banco de dados.
O CRM Online tem vários planos com base nos limites de armazenamento de dados, como 5 GB, 20 GB, etc. O CRM on-premise não tem tais limites de tamanho de armazenamento, uma vez que os dados existem em seus próprios servidores.
O CRM Online oferece recursos embutidos de recursos, como insights, escuta social, análises, etc. O CRM no local tem custos extras para esses recursos.
O CRM Online oferece suporte a atualizações automáticas para versões futuras. As atualizações do CRM no local precisam ser instaladas pelo administrador.

Acessando CRM

O Microsoft Dynamics CRM pode ser acessado por qualquer uma das seguintes opções -

  • Browser
  • Celular e tablets
  • Outlook

Concorrentes de produto

O Microsoft Dynamics CRM é, sem dúvida, um dos principais produtos do setor de CRM. No entanto, a seguir estão os outros produtos que competem com o Microsoft Dynamics CRM.

  • Salesforce.com
  • Oracle
  • SAP
  • Sage CRM
  • Sugar CRM
  • NetSuite

Versões do produto

O Microsoft Dynamics CRM cresceu ao longo dos anos, a partir de sua versão 1.0 em 2003. A versão mais recente (no momento da redação deste artigo) é 2015. A seguir está a lista cronológica de versões de lançamento -

  • Microsoft CRM 1.0
  • Microsoft CRM 1.2
  • Microsoft Dynamics CRM 3.0
  • Microsoft Dynamics CRM 4.0
  • Microsoft Dynamics CRM 2011
  • Microsoft Dynamics CRM 2013
  • Microsoft Dynamics CRM 2015
  • Microsoft Dynamics CRM 2016

Vamos começar configurando nosso ambiente de CRM. Estaremos usando a versão online do CRM 2015, já que a versão online oferece acesso para avaliação gratuita de um mês. Ao fazer isso, você não precisará comprar nenhuma licença para aprender CRM.

Note- Como o Microsoft Dynamics CRM é um produto em crescimento, é possível que, no momento em que estiver aprendendo isso, você tenha uma versão mais recente do produto. Nesse caso, o aplicativo pode não ser exatamente como você veria nas capturas de tela deste tutorial. No entanto, os conceitos básicos do produto permanecem os mesmos. A aparência e a navegação do produto podem mudar, no entanto, na maioria dos casos, você poderá navegar facilmente e localizar as opções necessárias.

Configurando a conta do Microsoft Dynamics CRM Online

Step 1 - Navegue até o seguinte URL -

https://www.microsoft.com/en-us/dynamics365/home

Caso você não veja as opções da versão de avaliação por meio deste link no futuro, tente pesquisar "Avaliação gratuita do Microsoft Dynamics CRM" no Google.

Step 2- Clique no botão Experimente gratuitamente. Isso iniciará um processo de registro de 3 etapas, conforme mostrado na captura de tela a seguir. Na Etapa 1 do registro de 3 etapas, preencha os detalhes obrigatórios, como nome, e-mail e idioma.

Step 3- Clique no botão Experimente gratuitamente. Isso iniciará um processo de registro de 3 etapas, conforme mostrado na captura de tela a seguir. Na Etapa 1 do registro de 3 etapas, preencha os detalhes obrigatórios, como nome, e-mail e idioma.

Step 4- Na Etapa 3 do registro de 3 etapas, a Microsoft validará o número do celular que você especificou. Para isso, você pode fornecer seu número de celular e clicar em Enviar mensagem. Em seguida, ele enviará um OTP para o seu celular, com o qual você poderá prosseguir com a configuração.

Step 5- Sua ID de usuário do Office 365 será criada. Você pode salvar essas informações de ID do usuário para acesso posterior.

Depois de configurar a conta, ela abrirá seu Painel de CRM, que será semelhante ao seguinte.

Só para enfatizar novamente, as imagens acima podem mudar com uma versão futura, porém configurar o ambiente será um processo bem simples.

Baixando CRM SDK

O Software Development Kit (SDK) do Microsoft Dynamics CRM contém exemplos de código importantes, incluindo código do lado do servidor, código do lado do cliente, extensões, plug-ins, serviços da web, fluxos de trabalho, modelo de segurança, etc. Basicamente, o SDK contém todos os recursos de desenvolvimento de que você precisa para começar a usar o CRM. Esteja você planejando configurar um novo projeto de plug-in ou um projeto de serviços da web para CRM, o SDK fornece a arquitetura básica e exemplos que vão do nível simples ao avançado para ajudá-lo a começar. Veremos agora as etapas para baixar e instalar o SDK.

Step 1- Cada versão do Microsoft Dynamics CRM vem com sua própria versão do SDK. A melhor maneira de obter a versão correta do SDK seria pesquisar no Google por sua respectiva versão de CRM. Por exemplo, se sua versão de CRM for 2015, tente pesquisar por "SDK do Microsoft Dynamics CRM 2015".

Step 2- Uma vez baixado, execute a instalação do exe. Clique em Continue.

Step 3- Pedirá que você escolha o local onde o SDK deve ser extraído. Selecione qualquer local apropriado onde você gostaria de manter o SDK de referência.

Step 4- Abra a pasta onde você extraiu. Você pode acessar todo o conteúdo do SDK aqui.

Conclusão

Neste capítulo, configuramos nosso ambiente criando uma conta CRM Online. Em seguida, baixamos o SDK do CRM, que será usado nos capítulos subsequentes deste tutorial. Certifique-se de anotar as credenciais com as quais você configurou a conta, já que você precisará dessas credenciais na próxima vez que fizer login.

Todo o Microsoft Dynamics CRM foi desenvolvido em torno dos módulos funcionais a seguir.

  • Sales
  • Marketing
  • Gestão de Serviços

Esses módulos funcionais são frequentemente chamados de Work Areas.

Compreendendo os Módulos Funcionais de CRM

Todo o aplicativo de CRM é dividido funcionalmente para diferentes tipos de usuários e equipes. Assim, se uma organização está usando CRM para gerenciar seus processos, os usuários da equipe de vendas usariam as funcionalidades do módulo de Vendas, enquanto os usuários da equipe de marketing usariam as funcionalidades do módulo de Marketing.

Todos esses três módulos funcionais se unem para conduzir todo o ciclo de vida de conquista de um novo cliente (Marketing), vendendo os serviços (Vendas) e mantendo os clientes existentes (Gerenciamento de Serviços).

Para entender melhor esse fluxo, considere um banco que vende cartões de crédito para seus clientes. O ciclo de vida típico de venda de um cartão de crédito a um cliente seria o seguinte. Em cada etapa deste ciclo de vida, você verá como os módulos de Vendas, Marketing e Serviço desempenham sua função.

Sales & Marketing- O executivo de call center do banco recebe dados de clientes potenciais; frequentemente chamado de Leads em CRM. Esses leads são capturados no sistema de CRM por meio de campanhas de marketing, incentivos de vendas, referências, etc.

Sales- O executivo do call center se comunica com esses Leads por telefone / e-mail / etc. Se o cliente estiver interessado na oferta de cartão de crédito, o registro de Lead será convertido em um registro de Oportunidade (Lead ganho).

Service- Assim que um cliente se torna parte do sistema, a empresa o ajudará com pagamentos, faturamento, reembolsos, etc. Sempre que o cliente tiver alguma dúvida ou preocupação, ele fará uma chamada para o call center e levantará os incidentes. O executivo fará o acompanhamento para solucionar o caso com o objetivo de prestar um serviço de qualidade ao cliente. Essas tarefas se enquadram no CRM Service Management.

Navegando nas áreas de trabalho de CRM

Step 1 - Abra a página inicial do CRM.

Step 2 - Por padrão, você verá a área de trabalho Vendas conforme selecionada.

Step 3- Para alterar a área de trabalho, clique na opção Mostrar áreas de trabalho. Você verá as opções para selecionar Vendas, Serviço e Marketing.

Step 4- Clique em Vendas. Isso mostrará todas as entidades que se enquadram em Vendas, como Contas, Contatos, Leads, Oportunidades, Concorrentes, etc. Cada uma dessas entidades são categorizadas por seus processos de negócios, como Meu Trabalho, Clientes, Vendas, Garantias, etc.

Step 5 - Da mesma forma, se você clicar na área de trabalho Marketing, verá todas as entidades relacionadas às funcionalidades do negócio de Marketing.

Módulo de Vendas

O módulo de vendas do CRM é projetado para conduzir todo o ciclo de vida de vendas de um novo cliente. O módulo de vendas consiste nos seguintes submódulos -

Leads- Representa uma pessoa ou organização que pode ser um cliente potencial para a empresa no futuro. Este é o primeiro passo para conseguir um cliente potencial no sistema.

Opportunities- Representa uma venda potencial ao cliente. Assim que um Lead mostra interesse na oferta, ele é convertido em uma Oportunidade. Uma oportunidade será ganha ou perdida.

Accounts- Representa uma empresa com a qual a organização se relaciona. Assim que uma oportunidade ganha, ela é convertida em uma conta ou em contatos.

Contacts- Representa uma pessoa ou qualquer indivíduo com quem a organização tenha relações. Em sua maioria, esses Contatos são clientes das organizações (por exemplo, todos os clientes de cartão de crédito de um banco). Assim que uma oportunidade ganha, ela é convertida em uma conta ou em contatos.

Competitors - Gerencia todos os concorrentes de mercado da organização.

Products - Gerencia todos os produtos oferecidos pela organização aos seus clientes (exemplo, todos os planos de cartão de crédito).

Quotes - Uma oferta formal de produtos ou serviços propostos a preços específicos enviados a um cliente potencial (exemplo, preço anual de um determinado plano de cartão de crédito enviado ao cliente).

Orders - Um orçamento que é aceito pelo cliente se transforma em um Pedido (exemplo, de todos os planos que a organização oferece, você pode optar por uma assinatura de 6 meses).

Invoices - Um pedido faturado gera uma fatura.

Módulo de Marketing

O módulo de Marketing do CRM é projetado para conduzir todo o processo de marketing de uma organização para seus clientes existentes e potenciais. O módulo de Marketing consiste nos seguintes submódulos -

Marketing Lists- Fornece uma maneira de agrupar seus contatos, contas e leads e interagir com eles por meio do envio de e-mails promocionais, detalhes de eventos, newsletters e outras atualizações relevantes para os clientes-alvo. Você pode definir os critérios para criar suas listas de marketing (por exemplo, contatos com idade entre 25 e 35).

Campaigns - As campanhas são projetadas para medir a eficácia e atingir um resultado específico, como a introdução de um novo produto ou aumentar a participação no mercado e podem incluir vários canais de comunicação, como e-mail, anúncios em jornais, anúncios no YouTube, etc.

Quick Campaigns - Uma Campanha Rápida é semelhante à Campanha, porém pode estar relacionada a apenas um tipo de atividade.

Todos os módulos de marketing acima funcionam em estreita coordenação com o módulo de vendas.

Módulo de Gerenciamento de Serviço

O módulo de Gerenciamento de Serviços de CRM é projetado para focar, gerenciar e rastrear as operações de atendimento ao cliente de uma organização, como suporte a serviços baseados em incidentes, suporte aos clientes usando agendamento de serviço, etc.

O módulo de Gerenciamento de Serviços cobre os seguintes submódulos -

  • Cases (Incidents)- Suporta qualquer solicitação, problema ou reclamação do cliente a ser rastreada por meio de incidentes / casos. Um caso segue vários estágios de um processo de resolução de problema e, finalmente, é resolvido e encerrado.

  • Knowledge Base - Mantém um repositório principal para todas as perguntas e respostas comuns que o cliente faz com frequência.

  • Contracts - Contratos trabalham com Casos indicando todos os contratos ativos que o cliente possui.

  • Resources/Resource Groups- Representa as pessoas, ferramentas, salas ou equipamentos usados ​​para prestar um serviço. Esses recursos podem ser usados ​​para resolver um problema específico do cliente.

  • Services - Representa todos os serviços que a organização oferece aos clientes.

  • Service Calendar - Usado para agendar horários de trabalho e horários dos usuários que trabalham na organização.

Gestão de Atividades

Todos os módulos explicados acima usam o módulo Activity Management do CRM. Uma atividade representa qualquer tipo de interação com o cliente, como uma chamada telefônica, e-mail, carta, etc. Essas atividades podem ser relacionadas a qualquer uma das entidades explicadas anteriormente, como conta, contato, lead, caso, etc. Por padrão, CRM fornece os seguintes tipos de atividades prontas para usar -

  • Chamada telefónica
  • Email
  • Task
  • Appointment
  • Compromisso recorrente
  • Letter
  • Fax
  • Resposta da campanha
  • Atividades de campanha
  • Atividade de serviço
  • Atividades Customizadas

Conclusão

Neste capítulo, aprendemos sobre os três principais módulos de CRM - Vendas, Marketing e Gerenciamento de Serviços. Entendemos como as áreas de trabalho são organizadas no CRM e como funciona todo o ciclo de vida de uma organização de CRM. Também vimos o módulo de Gerenciamento de Atividades do CRM que permite criar telefone, e-mail, fax e outros tipos de atividades de interação com o cliente.

Agora que temos uma visão geral funcional de todos os módulos de CRM, vamos aprender e entender sobre as entidades e formulários em CRM.

O que é uma entidade?

Uma entidade é usada para modelar e gerenciar dados de negócios no CRM. Contatos, Casos, Contas, Leads, Oportunidades, Atividades, etc. são todas as entidades que mantêm registros de dados. Conceitualmente, uma entidade CRM é equivalente a uma tabela de banco de dados. Por exemplo, a entidade Contatos manteria registros de contato, a entidade Casos manteria registros de casos e assim por diante.

Você pode ter: entidades prontas para usar (que vêm por padrão com o CRM) e entidades personalizadas (que podem ser criadas com personalização). Por exemplo, suponha que você esteja mantendo os dados dos livros que seus clientes leram. Para isso, você armazenará os dados do cliente usando uma entidade de contatos pronta para uso, mas onde armazenaria os dados dos livros? Você não tem nenhuma entidade que pode armazenar dados para livros. Em tais cenários, você criará uma nova entidade personalizada chamada Livros e a relacionará com a entidade de Contatos existente.

Para este tutorial, vamos dar um exemplo de armazenamento de empregadores e funcionários no CRM. Levando este exemplo em consideração, pronto para uso, o CRM forneceContactentidade na qual você pode armazenar idealmente todos os seus funcionários. Ele também fornece umAccountentidade na qual você pode armazenar todos os seus empregadores. Mas por causa das entidades de aprendizagem, vamos criar uma nova entidade personalizada chamadaEmployer (e não usar a entidade Conta existente).

Criação de uma nova entidade

Step 1 - Clique no botão superior da faixa de opções seguido por Settingsopção. CliqueCustomizations opção da seção Personalização (consulte a imagem a seguir).

Step 2 - Agora clique na opção Personalizar o sistema.

Isso abrirá a janela Solução Padrão. Você aprenderá mais sobre as Soluções de CRM nos próximos capítulos, mas por enquanto usará a Solução de CRM padrão.

Step 3 - Expanda a opção Entidades no painel esquerdo.

Step 4 - Agora clique em Novo → Entidade.

Step 5- No formulário de entidade, insira o Nome de exibição como Empregador e PluralName como Empregadores. Na seção 'Áreas que apresentam esta entidade', verifique Vendas, Atendimento e Marketing. Marcar essas opções exibirá a entidade recém-criada nas guias Vendas, Serviço e Marketing do CRM.

Step 6- Clique no ícone Salvar e Fechar. Isso criará uma nova entidade no banco de dados CRM nos bastidores.

Step 7 - Na janela principal da Solução Padrão, você verá a entidade Employer recém-criada.

Step 8- Clique na opção Publicar todas as personalizações na barra superior da faixa de opções. Isso publicará (também conhecido como commit) todas as mudanças que fizemos até agora. Você pode fechar esta janela clicando em Salvar e Fechar.

Criação de registros

CRM trata de gerenciar dados valiosos em seu sistema. Nesta seção, aprenderemos como criar, abrir, ler e excluir registros no CRM. Continuaremos com a entidade empregadora que criamos no capítulo anterior.

Step 1 - Navegue até a grade de registros da entidade empregador via Mostrar áreas de trabalho → Vendas → Extensões → Empregadores.

Step 2 - Clique no ícone Novo.

Isso abrirá o formulário padrão do novo empregador. Você pode ver que há apenas um campo editável Nome neste formulário padrão. Insira Empregador 1 no campo Nome. Clique em Salvar e fechar.

Step 3 - no Active Employers visualização, você pode ver o registro do empregador recém-criado.

Acessando Registros

Para acessar os registros já criados no CRM, vá até a página da entidade. No nosso caso, navegue até Mostrar áreas de trabalho → Vendas → Extensões → Empregadores. Você verá uma lista de registros presentes na grade. Clique em qualquer registro de empregador para acessá-lo.

Atualizando Registros

Depois de abrir um registro, você pode apenas editar quaisquer detalhes no formulário. Por padrão, o CRM 2015 vem com opção de salvamento automático que salva todas as alterações feitas no formulário 30 segundos após a alteração. Como alternativa, você pode clicar em Ctrl + S.

Caso queira desativar o recurso de salvamento automático, vá para Configurações → Administração → Configurações do sistema → Ativar salvamento automático para todos os formulários e selecione Não.

Excluindo Registros

Step 1 - Selecione um ou vários registros que deseja excluir e clique no Delete botão.

Step 2 - Confirme a exclusão dos registros clicando em Delete.

Conclusão

Conforme visto no exemplo acima, o formulário de empregador padrão tinha apenas um campo. No entanto, em cenários da vida real, você terá muitos campos personalizados em um formulário. Por exemplo, se você olhar um exemplo de registro de contato (que é uma entidade de CRM fora da caixa), ele terá muitos campos para armazenar informações de contato, como nome completo, e-mail, telefone, endereço, casos, etc.

Nos próximos capítulos, você aprenderá como editar este formulário padrão e adicionar diferentes tipos de campos nele.

Antes de aprender como adicionar campos personalizados a formulários de CRM, vamos dar uma olhada em quais tipos de campos de dados são suportados pelo CRM.

Tipos de Campo

Pronto para usar, o CRM oferece 11 tipos de campos de dados que podem ser colocados em formulários -

  • Linha Única de Texto
  • Conjunto de opções (lista suspensa)
  • Duas opções (botão de rádio)
  • Image
  • Número inteiro
  • Número de ponto flutuante
  • Número decimal
  • Currency
  • Múltiplas Linhas de Texto
  • Data e hora
  • Lookup

A tabela a seguir lista cada um com uma breve descrição.

Sr. Não Tipo de campo e descrição
1

Single Line of Text

Este campo armazena até 4.000 caracteres de texto. Você também pode especificar o formato como um destes: e-mail, texto, área de texto, URL, símbolo de ticker e telefone. Você pode definir o comprimento máximo e o modo IME para cada um deles.

2

Option Set (Dropdown)

Este campo armazena um conjunto de opções, cada uma com um valor numérico e rótulo. Em outras palavras, é um campo suspenso no CRM. Você também pode definir conjuntos de opções globais que podem ser usados ​​em vários formulários.

3

Two Options (Radio Button)

Este campo fornece duas opções para o usuário selecionar (0 ou 1). Em outras palavras, é um campo de botão de opção.

4

Image

Quando uma entidade possui um campo de imagem, ela pode ser configurada para exibir a imagem para o registro no aplicativo.

5

Whole Number

Este campo armazena valores inteiros entre -2.147.483.648 e 2.147.483.647. Ele suporta a especificação de formatos como Nenhum, Duração, Fuso Horário e Idioma. Você também pode definir os valores mínimo e máximo.

6

Floating Point Number

Este campo armazena os números de ponto flutuante até 5 pontos decimais de precisão entre 0,00 e 1.000.000.000,00. Você também pode definir os valores mínimo e máximo.

7

Decimal Number

Este campo armazena até 10 casas decimais com valores que variam de -100.000.000.000,00 a 100.000.000.000,00.

8

Currency

Este campo é usado para armazenar quaisquer valores de moeda no intervalo de 922.337.203.685.477,0000 a 922.337.203.685.477,0000. Você também pode especificar a precisão como decimal do preço, precisão da moeda ou qualquer valor entre 0 e 4.

9

Multiple Lines of Text

Esta é uma caixa de texto de rolagem. Você pode definir o número máximo de caracteres para este campo.

10

Date and Time

Este campo é usado para armazenar dados relacionados a datas no CRM com dois formatos suportados: Somente Data e Data e Hora. Você também pode especificar o comportamento como Local do usuário, Somente data e Independente do fuso horário.

11

Lookup

Você pode criar um campo de pesquisa usando um relacionamento de entidade que já foi criado, mas ainda não usado com outro campo de pesquisa. Se você criar um campo de pesquisa em um formulário de entidade, o relacionamento será gerado automaticamente. Um campo de pesquisa é criado como um campo de relacionamento.

Nos dois últimos capítulos, você estudou como criar novas entidades, criar novos registros e tipos de campos disponíveis no CRM. Neste capítulo, você aprenderá a adicionar novos campos a formulários de CRM.

Dos 11 tipos de campos de dados estudados no capítulo anterior, você usará três tipos de campos em seu empregador - Conjunto de opções (lista suspensa), Linhas múltiplas de texto e Data e hora. O campo Option Set seria usado para armazenar o tipo de empregador, Multiple Lines of Text será usado para armazenar uma breve descrição do empregador e o campo DateTime seria usado para armazenar a data em que a empresa foi iniciada.Note: Você já tinha um campo Nome em seu formulário que era do tipo Linha Única de Texto.

Adicionando campos no formulário

Step 1 - Clique no botão superior da faixa de opções seguido por Settingsopção. CliqueCustomizations opção da seção Personalização (consulte a imagem abaixo).

Step 2 - Agora clique na opção Personalizar o sistema.

Isso abrirá a janela DefaultSolution. Você aprenderá mais sobre as Soluções de CRM nos próximos capítulos, mas por enquanto usará a Solução de CRM padrão.

Step 3 - Expanda a opção Entidades no painel esquerdo.

Step 4- Nas entidades expandidas, selecione Empregador. Isso abrirá os detalhes da entidade na janela à direita. Expanda a opção Empregador no painel esquerdo e você poderá ver formulários, visualizações, gráficos, campos e outras várias opções.

Step 5- Clique em Campos. Ele abrirá uma grade mostrando todos os campos que vieram por padrão quando você criou esta entidade.

Step 6- Clique no botão Novo. Na nova janela que se abre, insira os seguintes detalhes -

Display Name - Tipo de empregador

Name- Este campo será preenchido automaticamente com base no nome de exibição que você selecionar. No entanto, se desejar alterá-lo, você pode fazer isso.

Data Type- Conjunto de opções. Assim que você selecionar o tipo de dados como conjunto de opções, ele mostrará o painel de opções. Clicar no ícone de mais (+) cria um novo item de conjunto de opções com Rótulo padrão como Item e Valor padrão como 100.000.000. Você pode alterar o rótulo deste item para adicionar quatro opções que representam os tipos de empregador: Privado, Governo, Multinacional e Público.

Step 7- Clique em Salvar e fechar na faixa superior. Você criou com êxito o campo Tipo de empregador.

Step 8 - Semelhante ao que você acabou de fazer para adicionar o campo Tipo de empregador, adicione três outros campos conforme descrito e mostrado nas seguintes capturas de tela -

Number of Employees - Este será um campo Número inteiro.

Founded On - Este será um campo DateTime.

Employer Description - Este será um campo de várias linhas de texto.

Step 9- Agora adicione esses novos campos no formulário do empregador. Para isso, clique em Formulários na navegação à esquerda sob a entidade Empregador. Isso mostrará dois formulários com informações de nome. Por padrão, o CRM cria dois formulários - Principal e Mobile-Express. Clique no formulário principal.

Step 10 - Você pode ver os campos recém-adicionados no painel Field Explorer à direita.

Step 11 - Arraste e solte esses campos na guia Geral.

Step 12 - Clique em Salvar e em Publicar.

Step 13- Agora você pode criar registros de empregador com os campos de atualizações. Navegue até a página inicial do CRM → Vendas → Empregadores → Novo. O novo formulário que será aberto desta vez conterá todos os novos campos que você adicionou neste capítulo. Você pode preencher alguns detalhes e clicar em Salvar e Fechar.

Conclusão

Neste capítulo, aprendemos a trabalhar com formulários de CRM e a personalizá-los inserindo vários tipos de campos neles. Também aprendemos a adicionar quantos campos quisermos em qualquer formulário e organizá-los usando várias guias e seções de acordo com os requisitos de negócios.

O Microsoft Dynamics CRM é um produto vasto que evoluiu significativamente ao longo dos anos. O produto vem com muitas funcionalidades prontas para usar que estão embutidas no sistema. Você não precisa escrever nenhum código para utilizar esses recursos. Um dos importantes recursos prontos para uso é a capacidade de pesquisa do CRM, pois oferece suporte a recursos avançados de pesquisa e filtragem.

Pesquisa rápida

Por padrão, a exibição em grade de cada entidade no CRM oferece suporte a uma funcionalidade de Pesquisa Rápida usando uma barra de pesquisa no canto superior direito. A seguir está uma captura de tela de pesquisa rápida na entidade de contato.

Você pode tentar inserir uma string de pesquisa como 'Robert' e ela retornará todos os registros correspondentes.

Você pode prefixar a palavra-chave de pesquisa com * (asterisco) para realizar uma pesquisa curinga.

Note - Ao usar a versão cliente da Web do Microsoft Dynamics CRM, a Pesquisa rápida sempre pesquisa todos os registros ativos, independentemente da exibição selecionada.

Você pode personalizar a Pesquisa Rápida (como personalizar qualquer outra Visualização) para modificar os critérios de filtro, configurar a classificação, adicionar colunas de visualização, adicionar colunas de localização e alterar outras propriedades.

Busca Avançada

A Pesquisa Avançada permite pesquisar registros de qualquer entidade no CRM. É um dos recursos mais fortes e úteis que vem pronto para uso com o CRM. O ícone Pesquisa Avançada aparece na barra superior da faixa de opções do Microsoft Dynamics CRM, independentemente da tela em que você esteja.

Clique no ícone Localização Avançada para abrir a janela Localização Avançada. Essa janela permitirá que você selecione a entidade para a qual deseja pesquisar registros, aplique critérios de filtragem e agrupamento e salve suas visualizações de Localização Avançada como visualizações pessoais.

Vamos dar um exemplo. Suponha que você queira pesquisar todos os Contatos com Nome que contenham Robert e que sejam divorciados. Para isso -

Step 1- Selecione Contatos na lista suspensa Procurar. Esta lista suspensa conterá todas as entidades presentes em seu sistema.

Step 2- Insira os critérios de pesquisa conforme mostrado na imagem a seguir. Você pode adicionar quantos parâmetros de consulta de pesquisa desejar. Você pode até agrupar esses critérios usando parâmetros de grupo. Por exemplo, se você deseja pesquisar todos os contatos cujo primeiro nome seja Robert ou Mark, você pode adicionar dois critérios de pesquisa e agrupá-los usando GroupOR.

Step 3- Clique no botão Resultados. Ele mostrará os registros correspondentes em uma nova guia.

Step 4- Você também pode editar as colunas que gostaria de ver nos resultados da pesquisa clicando em Editar colunas. Por exemplo, nossa grade atual contém apenas duas colunas - Nome completo e Telefone comercial. No entanto, se desejar ter uma coluna adicional de ID de e-mail adicionada a esta grade, você pode fazer isso usando esta opção.

Salvando visualização personalizada

Neste estágio, se você quiser salvar este critério de pesquisa, junto com os filtros e colunas editadas, você pode fazer isso clicando no botão Salvar. Depois de salvo, você pode usar esta visualização salva quando estiver na página da entidade.

Por exemplo, considere que, como executivo de clientes, você atende a dois tipos de clientes: Normal e Premium. Portanto, você pode criar um filtro avançado com essas respectivas categorias e salvá-las como Contatos normais atribuídos a mim e Contatos Premium atribuídos a mim. Você pode acessar rapidamente essas visualizações diretamente da página de entidade de contato sem realizar uma pesquisa rápida ou uma pesquisa de localização avançada sempre que usar o sistema.

Os recursos da web no CRM são os arquivos virtuais da web armazenados no banco de dados do CRM e usados ​​para implementar as funcionalidades da página da web no CRM. Esses arquivos podem ser HTML, JScript, Silverlight ou qualquer outro tipo compatível.

Sendo o CRM um produto, vem com um amplo conjunto de recursos e funcionalidades. No entanto, na maioria das vezes, você teria que estender essas funcionalidades existentes para atender aos seus requisitos personalizados. A extensão dessas funcionalidades geralmente acontece de duas maneiras -

  • Extending on Client Side - Usando recursos da Web e scripts de formulário.

  • Extending on Server Side - Plugins, fluxos de trabalho e serviços da Web (aprenderemos essa parte nos próximos capítulos).

Usos de recursos da web

Conforme mencionado acima, estender o CRM no lado do cliente é onde os recursos da Web entram em cena. Para entender isso claramente, considere os seguintes casos de uso -

  • Você tem um formulário CRM contendo determinados campos. O CRM fornece recursos prontos para uso para validações básicas, como campos obrigatórios, comprimentos de campo, etc. No entanto, e se você gostaria de ter uma validação mais complexa, como validar se o número de telefone inserido está no formato correto, ou validando se o endereço inserido realmente existe ou se o SSN inserido está correto?

  • O CRM fornece personalizações de IU prontas para uso, como a criação de seções e guias em um formulário, reorganização de campos, etc. No entanto, e se o cliente quiser criar uma página personalizada que mostre todas as informações do cliente provenientes de seus outros Sistema ERP?

  • O CRM vem com uma barra de fita padrão, que contém todos os botões e opções. E se você quiser adicionar um botão de faixa de opções próprio?

  • Considere que você já possui um sistema ERP instalado. E se você quiser abrir algumas telas de CRM deste sistema ERP?

  • Você sempre pode chamar qualquer serviço da web externo em seu código de plugin do lado do servidor. No entanto, e se você quiser chamar algum serviço da Web externo enquanto ainda estiver no lado do cliente?

A resposta para todos esses “e se” são os recursos da web. Cada recurso da Web pode ser acessado por meio de seu URL exclusivo. Você pode fazer upload de um arquivo de recurso da Web ou para recursos baseados em código (como HTML, Jscript, etc.), pode até editá-los diretamente no CRM. Como os recursos da Web são armazenados no CRM, eles podem ser facilmente migrados de um ambiente para outro juntos, junto com quaisquer personalizações de CRM.

Tipos de recursos da web

Tipo de recurso da web Aplicativo de amostra em CRM
WebPage (HTML) Você pode criar qualquer página HTML personalizada, como mapas, página de aplicativo personalizado, etc. e colocá-la dentro do formulário CRM.
Folha de estilo (CSS) Quaisquer arquivos CSS que serão usados ​​junto com os arquivos HTML.
Script (JScript) Qualquer lógica do lado do cliente, como validações, manipulação de valores de campo, etc.
Dados (XML) Pode ser usado para armazenar quaisquer configurações estáticas ou dados de configuração.
Imagem (PNG, JPG, GIF, ICO) Quaisquer imagens usadas no aplicativo em botões da faixa de opções, ícones, formulários, etc.
Silverlight (XAP) Qualquer aplicativo Silverlight personalizado incorporado ao CRM.
StyleSheet (XSL) Usado para transformar dados XML.

Dentre todos esses tipos de recursos da Web, estudaremos os tipos mais importantes de recursos da Web - Recursos da Web em HTML e Recursos da Web JScript nos capítulos subsequentes.

Acessando recursos da web para qualquer entidade

Todos os Recursos da Web armazenados no banco de dados podem ser acessados ​​no CRM. A seguir estão as etapas envolvidas -

Step 1 - Vá para Configurações → Personalizações → Personalizar o sistema.

Step 2 - Na navegação à esquerda, selecione Web Resources. Atualmente, você não será capaz de ver nenhum recurso da Web, pois ainda não criamos nada.

Veremos como criar recursos da web nos próximos capítulos.

Os Recursos da Web JScript são provavelmente o tipo mais importante de recursos da Web que você usará com o Microsoft Dynamics CRM.

Aplicações de JavaScript em CRM

Programação de evento de formulário

A Programação de eventos de formulário é usada para lidar com comportamentos do lado do cliente, como o que acontece quando um usuário abre um formulário, altera alguns dados, move-se pelas guias, etc. Para obter essas interações do lado do cliente, você escreverá código JavaScript e o adicionará como um Recurso da Web JScript em CRM. No entanto, o código JavaScript que você escreverá deve usar o modelo Xrm.Page do Dynamic CRM e não o DOM JavaScript padrão. Usar o modelo Xrm.Page é a forma de codificação da Microsoft que garante que qualquer código que você escreva usando esse modelo será compatível com quaisquer versões futuras do CRM.

Recursos da Web

Além de ser usado na Programação de Evento de Formulário, o JavaScript é usado em outras aplicações de CRM, como -

  • Abra formulários, visualizações e caixas de diálogo com um URL exclusivo.

  • Usando endpoints OData e SOAP para interagir com serviços da web.

  • Fazer referência ao código JavaScript dentro de outros recursos da Web (como recursos da Web em HTML).

Nesses casos, você escreveria seu código JavaScript (usando o modelo Xrm.Page) e o adicionaria como um recurso da Web JScript no CRM, que pode então ser referenciado em qualquer lugar com um URI exclusivo.

Customizações de faixa de opções

Finalmente, um dos outros usos comuns de JavaScript é lidar com personalizações de faixa de opções, como -

  • Exibir / ocultar botões da faixa de opções com base em alguma lógica
  • Ativar / desativar botões da faixa de opções com base em alguma lógica
  • Lide com o que acontece quando você clica em um determinado botão da faixa de opções

Para lidar com esses cenários, você escreverá sua lógica JavaScript (usando o modelo Xrm.Page) e a adicionará como um recurso da Web JScript. Este recurso da Web pode então ser referenciado no XML do botão da faixa de opções e podemos especificar qual método em qual arquivo JScript chamar para verificar se um botão da faixa de opções deve ser exibido / oculto ou ativado / desativado ou manipular eventos de clique.

Modelo de objeto Xrm.Page

A seguir está a hierarquia do objeto Xrm.Page mostrando os namespaces, objetos e suas coleções disponíveis. Você usará essas propriedades ao escrever o código JScript.

Namespaces

Sr. Não Objeto e descrição
1

Context

Fornece métodos para recuperar informações específicas do contexto, como detalhes da organização, detalhes do usuário conectado ou parâmetros que foram passados ​​para o formulário em uma string de consulta.

2

Data

Fornece acesso aos dados da entidade e métodos para gerenciar os dados no formulário, bem como no controle de fluxo do processo de negócios.

3

UI

Contém métodos para recuperar informações sobre a interface do usuário, além de coleções para vários subcomponentes do formulário.

Objetos

Sr. Não Objeto e descrição
1

Entity

Fornece método para -

  • Recuperar informações de registro
  • Método de salvamento
  • Atributos de coleção
2

Process

Métodos para recuperar propriedades do fluxo de processos de negócios.

3

Navigation

Fornece acesso aos itens de navegação usando a coleção de itens.

4

FormSelector

Usa a coleção de itens para acessar os formulários disponíveis para o usuário. Também usa o método de navegação para fechar e abrir formulários.

5

Stages

Cada processo possui uma coleção de estágios que podem ser acessados ​​usando o método getStages de processo.

6

Steps

Cada estágio compreende várias etapas que podem ser acessadas usando o método getSteps de estágio.

Coleções

Sr. Não Coleções e descrição
1

Attributes

Fornece acesso aos atributos da entidade disponíveis no formulário.

2

Controls

ui.controls - Fornece acesso a cada controle presente no formulário.

attribute.controls - Fornece acesso a todos os controles em um atributo.

section.controls - Fornece acesso a todos os controles de uma seção.

3

Items

Fornece acesso a todos os itens de navegação em um formulário.

4

Tabs

Fornece acesso a todas as guias em um formulário.

5

Sections

Fornece acesso a todas as seções de um formulário.

Eventos com suporte na programação de formulários

A programação de formulário usando o modelo Xrm.Page permite que você lide com os seguintes eventos de formulário -

  • onLoad
  • onSave
  • onChange
  • TabStateChange
  • OnReadyStateComplete
  • PreSearch
  • Eventos de controle de fluxo de processo empresarial

Exemplo de programação de formulário

Neste exemplo, colocaremos algumas validações no formulário de contato com base no PreferredMethodofCommunication que o usuário selecionar. Assim, se o usuário selecionar seu método preferido como Email, o campo Email deve se tornar obrigatório e da mesma forma para os outros campos de Telefone e Fax.

Step 1 - Crie um arquivo JavaScript chamado contacts.js e copie o código a seguir.

function validatePreferredMethodOfCommunication() { 

   //get the value of Preffered Method of Communication code 
   var prefferedContactMethodCode = 
      Xrm.Page.getAttribute('preferredcontactmetho dcode').getValue();  
   
   //if Preferred Method = Any, make all fields as non-mandatory 
   
   //else if Preferred Method = Phone, make Mobile Phone field mandatory 
   //and all other fields as non-mandatory 
   
   //else if Preferred Method = Fax, make Fax field mandatory 
   //and all other fields as non-mandatory 
   
   if(prefferedContactMethodCode == 1) { 
      clearAllMandatoryFields(); 
   }  
   if(prefferedContactMethodCode == 2) { 
      clearAllMandatoryFields(); 
      Xrm.Page.getAttribute('emailaddress1').setRequiredLevel('required'); 
   } else if(prefferedContactMethodCode == 3) { 
      clearAllMandatoryFields(); 
      Xrm.Page.getAttribute('mobilephone').setRequiredLevel('required'); 
   } else if(prefferedContactMethodCode == 4) { 
      clearAllMandatoryFields(); 
      Xrm.Page.getAttribute('fax').setRequiredLevel('required'); 
   } 
} 
function clearAllMandatoryFields() { 
   
   //clear all mandatory fields 
   Xrm.Page.getAttribute('emailaddress1').setRequiredLevel('none'); 
   Xrm.Page.getAttribute('mobilephone').setRequiredLevel('none'); 
   Xrm.Page.getAttribute('fax').setRequiredLevel('none'); 
}

Step 2 - Abra o formulário de entidade de contato navegando para Configurações → Personalizações → Personalizar o sistema → Entidade de contato → Formulários → Formulário principal.

Step 3 - Clique em Propriedades do formulário.

Step 4 - Na janela Propriedades do formulário, clique em Adicionar.

Step 5 - Na próxima janela Pesquisar registro de recurso da web, clique em Novo, pois estamos criando um novo recurso da web.

Step 6 - Na janela Novo recurso da web, insira os seguintes detalhes -

Name - new_contacts.js

Display Name - contact.js

Type - JScript

Upload File - Carregue o arquivo JavaScript que você criou em sua máquina local.

Step 7- Clique em Salvar seguido de Publicar. Depois disso, feche a janela e você retornará à janela Pesquisar registro de recursos da Web.

Step 8- Aqui, agora você pode ver o recurso da web new_contacts.js. Selecione-o e clique em Adicionar. Agora você adicionou com sucesso um novo recurso da web e o registrou no formulário.

Step 9- Agora vamos adicionar um manipulador de eventos na mudança do campo Método Preferencial de Comunicação. Este manipulador de eventos chamará a função JavaScript que acabamos de escrever. Selecione as seguintes opções na seção Manipulador de eventos.

Control - Método preferido de comunicação

Event - OnChange

Em seguida, clique no Add botão, como mostrado na imagem a seguir.

Step 10 - Na próxima janela de Propriedades do Handler, especificaremos o método a ser chamado quando ocorrer o evento de mudança.

Selecione Biblioteca como new_contacts.js e Função como validatePreferredMethodOfCommunication. Clique OK.

Step 11- Agora você poderá ver a Biblioteca de Formulários (Recurso da Web) e os eventos registrados nela. Clique OK.

Step 12 - Clique em Salvar seguido de Publicar.

Step 13- Agora abra qualquer formulário de contato e defina o método preferido de comunicação como telefone. Isso tornará o campo Telefone celular obrigatório. Se agora você tentar salvar este contato sem inserir nenhum número de celular, será exibido um erro dizendo 'Você deve fornecer um valor para Celular'.

Conclusão

Neste capítulo, começamos entendendo as três aplicações importantes de JavaScript no CRM. Posteriormente, exploramos o modelo Xrm.Page e o usamos para aprender a programar Form, juntamente com um exemplo.

Neste capítulo, aprenderemos sobre os vários recursos da web no Microsoft Dynamics CRM.

Aplicativos de recursos da Web em HTML

Um recurso da Web em HTML no CRM pode conter qualquer conteúdo HTML que pode ser processado em um navegador. Considere os seguintes cenários onde você gostaria de usar recursos da Web em HTML -

  • Você tem uma página HTML estática que deseja mostrar na tela do CRM.

  • Você tem uma página HTML customizada que espera alguns parâmetros de entrada e é renderizada com base nesses parâmetros de entrada. Por exemplo, considere que você está buscando informações de uma API externa ou serviço da web e deseja exibi-las no CRM.

  • Você deseja exibir algumas informações com uma aparência diferente da IU padrão do CRM.

Você tem uma página ASPX personalizada (fora do aplicativo CRM) que é renderizada com base nos parâmetros de entrada. Como o CRM não permite que você tenha recursos da Web ASPX, você pode criar um recurso da Web em HTML e chamar a página ASPX externa a partir dessa página HTML.

Exemplo de recurso da Web em HTML

Criaremos um recurso da Web em HTML muito simples que exibirá um texto personalizado 'Bem-vindo ao TutorialsPoint'. Observe que este é um exemplo muito simples de um recurso da Web em HTML. Praticamente, os recursos da Web em HTML seriam mais complexos do que isso.

Step 1 - Crie um arquivo HTML chamado sampleHTMLWebResource.html e copie o código a seguir.

<!DOCTYPE html> 
<htmllang = "en"xmlns = "http://www.w3.org/1999/xhtml"> 
   <head> 
      <metacharset = "utf-8"/> 
      <title>Welcome to Tutorials Point</title> 
   </head> 
   
   <body> 
      <h1>Welcome to Tutorials Point. This is an example of HTML Web Resource.</h1> 
   </body> 
</html>

Step 2- Primeiro, criaremos um novo recurso da Web e, em seguida, faremos referência a ele no formulário de contato. Abra o DefaultSolution e navegue até a guia WebResources no painel esquerdo. Clique em Novo.

Step 3- Isso abrirá uma janela Novo recurso da web. Insira os detalhes conforme mostrado na captura de tela a seguir e navegue pelo arquivo HTML que criamos na Etapa 1. Clique em Salvar e publicar. Feche a janela.

Step 4 - Você verá o novo recurso da web adicionado à grade Recursos da web.

Step 5- Agora abra o formulário de contato em Configurações → Personalizações → Personalizar o sistema → Contato → Formulário principal. Selecione a seção Informações de contato e alterne para a guia Inserir na barra superior da faixa de opções. Clique em Recurso da web.

Step 6- Será aberta uma janela Adicionar Recurso da Web. Clique em Pesquisa de recursos da Web nesta janela, que abrirá a janela Registro de pesquisa de recursos da Web. Pesquise o Recurso da Web que você acabou de criar (new_sampleHTMLWebResource), selecione-o na grade e clique em Adicionar.

Step 7- Voltando para Adicionar recurso da web, insira o nome e o rótulo conforme mostrado na captura de tela a seguir e clique em OK. Feche a janela.

Você verá o recurso da Web HTML adicionado abaixo do campo Endereço.

Step 8 - Para testar isso, abra qualquer registro de contato e você verá o conteúdo do recurso da Web em HTML exibido lá.

Limitações de recursos da Web em HTML

  • Não há nenhuma maneira suportada de usar o código do lado do servidor em HTML Web Resources.

  • Os recursos da Web em HTML podem aceitar apenas um número limitado de parâmetros. Para passar mais de um valor no parâmetro de dados, você terá que codificar os parâmetros e incluir a lógica de decodificação na outra extremidade.

Os fluxos de trabalho no CRM permitem automatizar processos de negócios simples e complexos dentro do CRM. Você pode criar fluxos de trabalho usando funcionalidades prontas para usar do CRM ou escrever fluxos de trabalho personalizados com código .NET para implementar fluxos de trabalho complexos. Os processos de fluxo de trabalho são executados em segundo plano ou em tempo real e podem, opcionalmente, exigir uma entrada do usuário.

Os fluxos de trabalho podem ser acionados com base em condições específicas ou mesmo iniciados manualmente pelos usuários. Internamente, os fluxos de trabalho do CRM são implementados usando o Windows Workflow Foundation. Neste capítulo, aprenderemos sobre a configuração de fluxos de trabalho.

A configuração de um fluxo de trabalho tem as seguintes partes principais (em sequência) -

  • Configure a entidade na qual o fluxo de trabalho será executado
  • Configure se o fluxo de trabalho será executado de forma síncrona ou assíncrona
  • Configure a mensagem (evento) em que o fluxo de trabalho será executado
  • Configure o escopo no qual o fluxo de trabalho será executado
  • Configure as etapas e etapas (ações) do fluxo de trabalho

Fluxo de trabalho síncrono / assíncrono

Ao criar um fluxo de trabalho, você verá a opção Executar este fluxo de trabalho em segundo plano (recomendado), que determina se o fluxo de trabalho será executado em tempo real (de forma síncrona) ou em segundo plano (de forma assíncrona).

Geralmente, a abordagem recomendada é executar os fluxos de trabalho em segundo plano, pois eles usam os recursos do sistema conforme e quando disponíveis. No entanto, você sempre pode voltar de um fluxo de trabalho em tempo real para um fluxo de trabalho em segundo plano e vice-versa.

Mensagens de fluxo de trabalho

Os fluxos de trabalho podem ser registrados em eventos específicos da seguinte forma -

  • Quando um registro é criado
  • Quando o status de um registro muda
  • Quando um registro é atribuído
  • Quando o valor de um campo de registro muda
  • Quando um registro é excluído

Escopo do Fluxo de Trabalho

Fluxos de trabalho permitem que você defina o escopo em que o fluxo de trabalho será executado. A seguir estão os escopos de fluxo de trabalho com suporte -

User O fluxo de trabalho será executado apenas nos registros pertencentes ao mesmo usuário que o usuário do fluxo de trabalho.
Business Unit O fluxo de trabalho será executado nos registros pertencentes aos usuários da unidade de negócios da mesma forma que o usuário do fluxo de trabalho.
Parent Child Business Units O fluxo de trabalho será executado nos registros pertencentes aos usuários da unidade de negócios, assim como o usuário do fluxo de trabalho, bem como qualquer unidade de negócios filho.
Organization O fluxo de trabalho será executado em registros pertencentes a qualquer usuário do CRM.

Etapas do fluxo de trabalho

Os fluxos de trabalho no CRM são uma combinação de uma série de etapas que o fluxo de trabalho seguirá. Você pode até mesmo dividir essas etapas em estágios lógicos. As etapas a seguir são suportadas por fluxos de trabalho de CRM -

Conditional Steps
Check Condition Especifica uma declaração lógica “se (condição) - então”.
Conditional Branch Especifica uma declaração lógica “else - if - then”. Isso só pode ser usado com uma condição de verificação.
Default Action Especifica uma declaração lógica “else”. Isso só pode ser usado com uma condição de verificação.
Wait Steps
Wait Condition Espera até que uma condição específica seja atendida. Não se aplica a fluxos de trabalho em tempo real.
Parallel Wait Branch Especifica uma condição de espera alternativa com um conjunto de etapas adicionais que podem ser executadas assim que os critérios iniciais forem atendidos.
Action Steps
Create Record Cria um registro da entidade especificada com os valores padrão especificados.
Update Record Atualiza o registro selecionado com valores especificados ou dinâmicos.
Assign Record Atribui o registro selecionado a um usuário ou equipe.
Send Email Envia um email.
Perform Action Especifica as etapas (e ações) do fluxo de trabalho personalizado. Essas etapas personalizadas devem ser desenvolvidas por um desenvolvedor de CRM.
Change Status Altera o status do registro selecionado.
Stop Workflow Pára o fluxo de trabalho atual

Exemplo de fluxo de trabalho

Neste exemplo, criaremos um fluxo de trabalho simples executado em segundo plano para atribuir qualquer registro de contato recém-criado a um usuário específico e, em seguida, enviaremos um e-mail de boas-vindas ao cliente.

Step 1 - Vá para Configurações → Processos.

Step 2 - Clique em Novo.

Step 3 - Na janela CreateProcess, insira os seguintes detalhes -

Process Name - Novo fluxo de trabalho do cliente (pode ser qualquer nome que você desejar)

Category - Fluxo de Trabalho

Entity - Contato (será a entidade na qual você está criando o fluxo de trabalho. No nosso caso, é o contato)

Run this workflow in the background (recommended)- Marque esta opção porque estamos criando um fluxo de trabalho assíncrono em segundo plano. Finalmente, clique em OK.

Step 4 - Na janela Novo Processo, insira os seguintes detalhes -

Activate As - Processo

Scope - Usuário

Start when - O registro é criado

Clique Add Step → Atribuir registro.

Step 5- Você verá uma nova etapa adicionada ao fluxo de trabalho. Nesta etapa, especificaremos o usuário a quem todos os contatos criados devem ser atribuídos. Insira o nome da etapa comoAssign Record to Team. A opção Atribuir será padronizada como a entidade na qual estamos criando o fluxo de trabalho (Contato em nosso caso). Clique no ícone de pesquisa.

Step 6- Na janela Lookup, selecione qualquer usuário que você deseja. Você pode até selecionar uma equipe específica a quem deseja atribuir os registros. Clique em Adicionar.

Step 7- Adicione outra etapa clicando em Adicionar etapa → Enviar e-mail. Nesta etapa, configuraremos o envio de e-mail ao cliente.

Step 8- Uma nova etapa será adicionada. Digite seu nome como Enviar e-mail para o cliente. Clique em Definir propriedades.

Step 9 - Na próxima janela para configurar o e-mail, execute as seguintes operações−

From- Clique no campo De. No painel direito, selecione OwningUser e User. Clique em Adicionar → OK.

To- Clique no campo Para. No painel direito, selecione Contato e Contato. Clique em Adicionar → OK.

Subject - Insira um Assunto relevante.

Body - Insira um conteúdo de corpo relevante.

Step 10 - Clique em Salvar e depois em Ativar.

Step 11 - No pop-up Confirmação de ativação do processo que se segue, clique em Ativar.

Step 12- Vá para a guia Contatos e crie um novo contato. Assim que você criar um novo contato salvando o registro, verá o campo Proprietário definido para o usuário, que você configurou no fluxo de trabalho. Além disso, se você clicar na guia Atividades, verá uma atividade de e-mail sendo criada para este contato. Isso confirma que o fluxo de trabalho foi executado com êxito.

Fluxo de trabalho vs plug-in

Fluxos de trabalho e plug-ins podem ser usados ​​para estender e automatizar funcionalidades de CRM. Em muitos cenários, ambas as abordagens podem ser usadas alternadamente no lugar uma da outra. Por exemplo, se você tem um requisito simples de enviar um e-mail para seus clientes, pode fazê-lo por meio de um plug-in ou de um fluxo de trabalho.

Então, como você escolhe entre criar um fluxo de trabalho ou um plugin? A lista a seguir tenta explicar o mesmo -

  • Embora plug-ins e fluxos de trabalho possam ser usados ​​para executar lógica síncrona e assíncrona, os plug-ins são geralmente preferidos para lógica síncrona, enquanto fluxos de trabalho para lógica assíncrona.

  • Geralmente, para implementar lógicas de negócios complexas, os plug-ins são preferidos aos fluxos de trabalho. Os fluxos de trabalho são preferidos quando você deseja obter funcionalidades relativamente mais fáceis (como enviar e-mails, atribuir usuários, etc.)

  • Os plug-ins precisam ser desenvolvidos com codificação, enquanto os fluxos de trabalho podem ser configurados diretamente por usuários de negócios sem nenhum conhecimento dos fluxos de trabalho.

  • Os fluxos de trabalho podem ser executados sob demanda. Portanto, se houver requisitos em que o usuário deseja executar alguma lógica manualmente, os fluxos de trabalho seriam uma escolha melhor.

  • Do impacto no desempenho, os plug-ins síncronos fornecem um melhor desempenho (e rendimento) em comparação com fluxos de trabalho em tempo real em cenários onde a frequência de solicitação é mais alta.

Conclusão

Este capítulo nos apresentou uma das funcionalidades mais importantes do CRM - Workflows. Primeiro entendemos os fluxos de trabalho de sincronização / assíncrona, mensagens, escopo, etapas e, finalmente, vimos um exemplo ao vivo de criação e execução de um fluxo de trabalho. Finalmente, vimos as diferenças entre um fluxo de trabalho e um plugin.

Um plug-in é uma lógica de negócios personalizada que se integra ao Microsoft Dynamics CRM para modificar ou estender o comportamento padrão da plataforma. Os plug-ins atuam como manipuladores de eventos e são registrados para execução em um evento específico no CRM. Os plug-ins são escritos em C # ou VB e podem ser executados no modo síncrono ou assíncrono.

Alguns cenários onde você escreveria um plugin são -

  • Você deseja executar alguma lógica de negócios, como atualizar certos campos de um registro ou atualizar registros relacionados, etc., ao criar ou atualizar um registro CRM.

  • Você deseja chamar um serviço da Web externo em determinados eventos, como salvar ou atualizar um registro.

  • Você deseja calcular dinamicamente os valores do campo quando qualquer registro é aberto.

  • Você deseja automatizar processos como o envio de e-mails para seus clientes em determinados eventos no CRM.

Estrutura do Evento

A Estrutura de Processamento de Eventos no CRM processa as solicitações de plug-in síncrono e assíncrono, passando-o para o pipeline de execução do evento. Sempre que um evento aciona uma lógica de plug-in, uma mensagem é enviada para o CRM Organization Web Service, onde pode ser lida ou modificada por outros plug-ins ou por qualquer operação central da plataforma.

Estágios do Plugin Pipeline

Todo o pipeline de plugins é dividido em vários estágios nos quais você pode registrar sua lógica de negócios personalizada. O estágio do pipeline especificado indica em qual estágio do ciclo de execução do plug-in o código do plug-in é executado. De todos os estágios de pipeline especificados na tabela a seguir, você pode registrar seus plug-ins personalizados apenas em pré e pós-eventos. Você não pode registrar plug-ins em Platform Core Main Operations.

Evento Nome artístico Descrição
Pré-Evento Pré-validação Estágio no pipeline para plug-ins que devem ser executados antes da operação principal do sistema. Plug-ins registrados neste estágio podem ser executados fora da transação do banco de dados.
Pré-Evento Pré-operação Estágio no pipeline para plug-ins que devem ser executados antes da operação do sistema principal. Plugins registrados nesta etapa são executados dentro da transação do banco de dados.
Operação principal da plataforma MainOperation Intransação, a operação principal do sistema, como criar, atualizar, excluir e assim por diante. Nenhum plug-in personalizado pode ser registrado neste estágio. Apenas para uso interno.
Pós-Evento Pós operação Estágio no pipeline para plug-ins que devem ser executados após a operação principal. Os plug-ins registrados neste estágio são executados dentro da transação do banco de dados.

Sempre que o aplicativo CRM invoca um evento (como salvar ou atualizar um registro), a seguinte sequência de ações ocorre:

  • O evento aciona uma chamada de serviço da Web e a execução é passada pelos estágios do pipeline de eventos (pré-evento, operações centrais da plataforma, pós-evento).

  • As informações são empacotadas internamente como uma mensagem OrganizationRequest e finalmente enviadas aos métodos de serviço da Web de CRM interno e às operações principais da plataforma.

  • A mensagem OrganizationRequest é recebida primeiro pelos plug-ins pré-evento, que podem modificar as informações antes de passá-las para as operações principais da plataforma. Após as operações principais da plataforma, a mensagem é empacotada como OrganizationResponse e passada para os plug-ins pós-operação. Os plug-ins pós-operação podem opcionalmente modificar essas informações antes de passá-las para o plug-in assíncrono.

  • Os plug-ins recebem essas informações na forma de um objeto de contexto que é passado para o método Execute, após o qual o processamento posterior acontece.

  • Após a conclusão de todo o processamento do plugin, a execução é passada de volta para o aplicativo que disparou o evento.

Mensagens de Plugin

As mensagens são os eventos nos quais o plugin (ou lógica de negócios) está registrado. Por exemplo, você pode registrar um plugin na entidade Criar mensagem de contato. Isso acionaria a lógica de negócios sempre que um novo registro de contato fosse criado.

Para entidades personalizadas, a seguir estão as mensagens com suporte com base no fato de a entidade ser de propriedade do usuário ou da organização.

Nome da Mensagem Tipo de propriedade
Atribuir Apenas entidades de propriedade do usuário
Crio Entidades de propriedade do usuário e da organização
Excluir Entidades de propriedade do usuário e da organização
Garantir acesso Apenas entidades de propriedade do usuário
ModifyAccess Apenas entidades de propriedade do usuário
Recuperar Entidades de propriedade do usuário e da organização
RetrieveMultiple Entidades de propriedade do usuário e da organização
RetrievePrincipalAccess Apenas entidades de propriedade do usuário
RetrieveSharedPrincipalsAndAccess Apenas entidades de propriedade do usuário
RevokeAccess Apenas entidades de propriedade do usuário
SetState Entidades de propriedade do usuário e da organização
SetStateDynamicEntity Entidades de propriedade do usuário e da organização
Atualizar Entidades de propriedade do usuário e da organização

Para entidades prontas para uso padrão, há mais de 100 mensagens com suporte. Algumas dessas mensagens são aplicáveis ​​para todas as entidades, enquanto algumas delas são específicas para certas entidades. Você pode encontrar a lista completa de mensagens suportadas em um arquivo excel dentro do SDK:SDK\Message-entity support for plug-ins.xlsx

Plugin de escrita

Nesta seção, aprenderemos o básico para escrever um plugin. Estaremos criando um plugin de amostra que cria uma atividade Tarefa para acompanhar o cliente sempre que um novo cliente é adicionado ao sistema, ou seja, sempre que um novo Contactrecord é criado no CRM.

Primeiro de tudo, você precisaria incluir as referências a Microsoft.Xrm.Sdknamespace. O CRM SDK contém todos os assemblies SDK necessários. Supondo que você já tenha baixado e instalado o SDK no Capítulo 2, abra o Visual Studio. Crie um novo projeto do tipo Biblioteca de classes. Você pode nomear o projeto como SamplePlugins e clicar em OK.

Adicione a referência de Microsoft.Xrm.Sdkmontagem ao seu projeto. A assembleia está presente emSDK/Bin.

Agora, crie uma classe chamada PostCreateContact.cs e estender a aula de IPlugin. Até agora, seu código será parecido com o seguinte.

Você também precisará adicionar referência a System.Runtime.Serialization. Depois de adicionar as referências necessárias, copie o código a seguir dentro doPostCreateContact classe.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Xrm.Sdk;

namespace SamplePlugins {
   public class PostCreateContact:IPlugin {
      /// A plug-in that creates a follow-up task activity when a new account is created.
      /// Register this plug-in on the Create message, account entity,
      /// and asynchronous mode.

      public void Execute(IServiceProviderserviceProvider) {
         // Obtain the execution context from the service provider.
         IPluginExecutionContext context =(IPluginExecutionContext)
            serviceProvider.GetService(typeof(IPluginExecutionContext));

         // The InputParameters collection contains all the data
            passed in the message request.

         if(context.InputParameters.Contains("Target")&&
            context.InputParameters["Target"]isEntity) {
            
            // Obtain the target entity from the input parameters.
            Entity entity = (Entity)context.InputParameters["Target"];
            try {
               
               // Create a task activity to follow up with the account customer in 7 days
               Entity followup = new Entity("task");
               followup["subject"] = "Send e-mail to the new customer.";
               followup["description"] =
                  "Follow up with the customer. Check if there are any new issues
                  that need resolution.";
               
               followup["scheduledstart"] = DateTime.Now;
               followup["scheduledend"] = DateTime.Now.AddDays(2);
               followup["category"] = context.PrimaryEntityName;

               // Refer to the contact in the task activity.
               if(context.OutputParameters.Contains("id")) {
                  Guid regardingobjectid = new Guid(context.OutputParameter
                     s["id"].ToString());
                  string regardingobjectidType = "contact";
                  followup["regardingobjectid"] = 
                     new EntityReference(rega rdingobjectidType,regardingobjectid);
               }
               
               // Obtain the organization service reference.
               IOrganizationServiceFactory serviceFactory =
                  (IOrganizationSer viceFactory)serviceProvider.GetService
                  (typeof(IOrganizationServiceFactory));
               IOrganizationService service = 
                  serviceFactory.CreateOrganizationService(context.UserId);

               // Create the followup activity
               service.Create(followup);
            } catch(Exception ex) {
               throw new InvalidPluginExecutionException(ex.Message);
            }
         }
      }
   }
}

A seguir está uma explicação passo a passo do que este código faz -

Step 1- Implementa o método Execute tomando o objeto IServiceProvider como seu parâmetro. O provedor de serviços contém referências a muitos objetos úteis que você usará no plugin.

Step 2 - Obtém o objeto IPluginExecutionContext usando o método GetService de IServiceProvider.

Step 3- Obtém o objeto da entidade de destino da coleção InputParameters do objeto de contexto. Este objeto de classe Entity se refere ao registro da entidade Contact no qual nosso plugin seria registrado.

Step 4- Em seguida, cria um objeto da entidade Tarefa e define o assunto, a descrição, as datas, a categoria e a identificação do objeto apropriado. O aboutobjectid indica para qual registro de contato este registro de atividade está sendo criado. Você pode ver que o código obtém o id do registro de contato pai usando context.OutputParameters e o associa ao registro de entidade Task que você criou.

Step 5 - Cria o objeto de IOrganizationServiceFactory usando o objeto IServiceProvider.

Step 6 - Cria o objeto de IOrganizationService usando o objeto IOrganizationServiceFactory.

Step 7- Finalmente, usando o método Create deste objeto de serviço. Ele cria a atividade de acompanhamento que é salva no CRM.

Assinando o Conjunto de Plug-ins

Esta seção é aplicável apenas se você estiver registrando o assembly do plugin pela primeira vez. Você precisa entrar no assembly com uma chave para poder implantar o plugin. Clique com o botão direito na solução e clique em Propriedades.

Selecione a guia Assinatura das opções à esquerda e marque a opção 'Assinar a montagem'. Em seguida, selecione Novo em Escolha uma opção de arquivo de chave de nome forte.

Digite o nome do arquivo de chave como sampleplugins (pode ser qualquer outro nome que você desejar). Desmarque a opção Proteger meu arquivo de chave com uma senha e clique em OK. Clique em Salvar.

Finalmente, construa a solução. Clique com o botão direito → Construir. Construir a solução irá gerar o assembly DLL, que usaremos no próximo capítulo para registrar este plugin.

Tratamento de exceções no plug-in

Na maioria das vezes, a lógica do plug-in precisará lidar com exceções de tempo de execução. Para plug-ins síncronos, você pode retornar umInvalidPluginExecutionExceptionexceção, que mostrará uma caixa de diálogo de erro ao usuário. A caixa de diálogo de erro conterá a mensagem de erro personalizada que você passa para o objeto Message do objeto de exceção.

Se você olhar nosso código, estamos lançando a exceção InvalidPluginExecutionException em nosso bloco catch.

throw new InvalidPluginExecutionException(ex.Message);

Conclusão

Os plug-ins são definitivamente cruciais para qualquer implementação de CRM customizada. Neste capítulo, nos concentramos em compreender o modelo de estrutura de evento, estágios de pipeline, mensagens e escrever um plug-in de amostra. No próximo capítulo, vamos registrar esse plugin no CRM e vê-lo funcionando de ponta a ponta.

No último capítulo, criamos um plugin de amostra para criar uma atividade Tarefa de acompanhamento quando um registro de contato é criado. Neste capítulo, veremos como registrar este plugin no CRM usando a ferramenta de registro de plugin. Você pode encontrar a ferramenta neste local: SDK / Tools / PluginRegistration / PluginRegistration.exe.

Por conveniência, o processo de registro do plugin é dividido em três seções -

  • Conectando-se ao servidor
  • Registrando a Assembleia
  • Registrando o Plugin

Conectando-se ao servidor

Step 1 - Execute o PluginRegistration.exedo local especificado anteriormente. Clique no botão Criar nova conexão.

Step 2- Na janela Login, escolha Office 365, já que estamos usando a versão online do CRM. Insira suas credenciais e clique em Login.

Step 3 - A ferramenta será aberta e terá a aparência da imagem a seguir.

Registrando a Assembleia

Step 1 - Vá para Registrar → Registrar nova montagem.

Step 2- Isso abrirá a janela Registrar nova montagem. Clique no ícone Navegar e localize o Plugin DLL que você criou no último capítulo.

Step 3- Após navegar na DLL, clique em Carregar Montagem. Isso preencherá o assembly SamplePlugins e todas as suas classes de plug-in. Você pode ver oPostCreateContactclasse de plugin destacada abaixo. Se sua montagem de plug-in tivesse 3 classes de plug-in, ele teria mostrado três plug-ins listados lá.

Step 4- Selecione o modo de isolamento como Sandbox, Local como banco de dados e clique em Registrar plug-ins selecionados. Ele mostrará uma mensagem de sucesso, se o registro for bem-sucedido.

Registrando o Plugin

Agora iremos registrar as etapas específicas nas quais os plug-ins individuais serão chamados.

Step 1 - Selecione o plugin PostCreateContact.

Step 2 - Clique em Registrar → Registrar nova etapa.

Step 3 - Estaremos cadastrando este plugin na criação da entidade Contato, na fase de pós-operação e no modo síncrono.

Message - Criar

Primary Entity - Contato

Event Pipeline Stage of Execution - Pós-operação

Execution Mode - Síncrono

Mantenha o restante das opções por padrão e clique em Registrar nova etapa.

Você pode ver uma nova etapa adicionada ao plugin.

Agora iremos ao CRM e testaremos se nosso plugin está funcionando corretamente. Observe que essas etapas de teste são específicas para nosso plugin de exemplo.

Testando o Plugin

Vá para a guia Contatos e crie um novo registro. Depois de salvar o registro, você pode ver uma nova atividade criada e associada a este registro.

Você pode clicar na atividade para ver os detalhes que definimos no código.

Isso confirma que nosso plugin foi executado com sucesso. Da mesma forma, você pode estender seus plug-ins para obter funcionalidades altamente complexas.

O Microsoft Dynamics CRM fornece dois importantes serviços da web que são usados ​​para acessar o CRM de um aplicativo externo e invocar métodos da web para realizar operações comuns de dados de negócios, como criar, excluir, atualizar e localizar no CRM.

Considere os seguintes cenários -

  • Você tem um aplicativo .NET externo, que precisa se comunicar com o CRM. Por exemplo, você pode inserir um registro de contato no CRM quando um novo cliente for registrado em seu aplicativo externo.

  • Ou talvez você queira pesquisar registros no CRM e exibir os resultados da pesquisa em seu aplicativo externo.

Em tais cenários, você pode usar os serviços da web expostos pelo CRM para consumi-los em seu aplicativo e executar operações de criação, exclusão, atualização e localização no CRM.

Serviço da Web IDiscoveryService

Este serviço da web retorna uma lista de organizações às quais o usuário especificado pertence e o endpoint de URL para cada organização.

Serviço da Web IOrganizationService

Este serviço da web é o principal serviço da web usado para acessar dados e metadados no CRM. O IOrganizationService usa dois assemblies importantes -Microsoft.Xrm.Sdk.dll e Microsoft.Crm.Sdk.Proxy.dll. Esses assemblies podem ser encontrados no pacote CRM SDK dentro doBin pasta.

Microsoft.Xrm.Sdk.dll

Esse conjunto define os métodos e tipos principais de xRM, incluindo classes de proxy para tornar a conexão com o Microsoft Dynamics CRM mais simples, métodos de autenticação e contratos de serviço.

Microsoft.Crm.Sdk.Proxy.dll

Este assembly define as solicitações e respostas para mensagens não essenciais, bem como as enumerações necessárias para trabalhar com os dados da organização. A seguir estão os namespaces com suporte por esses dois assemblies.

Cada um desses assemblies suporta certas mensagens, que serão utilizadas para trabalhar com os dados armazenados em qualquer entidade. Uma lista completa de mensagens suportadas por eles pode ser encontrada nos seguintes links -

Supported xRM Messages - https://msdn.microsoft.com/en-us/library/gg334698.aspx

Supported CRM Messages - https://msdn.microsoft.com/en-us/library/gg309482.aspx

Métodos de serviço da web IOrganizationService

o IOrganizationService fornece oito métodos que permitem executar todas as operações comuns no sistema e entidades personalizadas, bem como metadados da organização.

Sr. Não Método e Descrição
1

IOrganizationService.Create

Cria um registro.

2

IOrganizationService.Update

Atualiza um registro existente.

3

IOrganizationService. Retrieve

Recupera um registro.

4

IOrganizationService. RetrieveMultiple

Recupera uma coleção de registros.

5

IOrganizationService. Delete

Exclui um registro.

6

IOrganizationService. Associate

Cria um link entre os registros.

7

IOrganizationService.Disassociate

Exclui um link entre os registros.

8

IOrganizationService.Execute

Usado para processamento de registro comum, bem como processamento especializado, como resolução de caso, detecção de duplicados, etc.

Exemplo de serviço da web

Para entender como os serviços da web funcionam no CRM, veremos um exemplo fornecido pelo SDK do CRM. Neste exemplo, vamos criar um novo registro de conta, atualizá-lo e, finalmente, excluí-lo usando o CRMIOrganizationService serviço de internet.

Step 1- Abra a pasta onde você extraiu o CRM SDK. Agora abra a solução QuickStartCS.sln navegando até o seguinte local: SDK \ SampleCode \ CS \ QuickStart

Step 2 - Estaremos explorando o QuickStart com Simplified Connectionprojeto. Abrirapp.configNeste projeto. Por padrão, oconnectionStrings seção neste arquivo será comentada.

Disto, descomente a primeira chave da string de conexão e edite os três detalhes a seguir -

Url- Especifique o URL da sua instância de CRM. No nosso caso, como estamos usando a versão online do CRM, você deverá mencionar essa URL.

Username - Seu nome de usuário do CRM Online.

Password - Sua senha do CRM Online.

Step 3 - Abra o SimplifiedConnection.cs arquivo neste projeto e Runmethod dentro dele.

public void Run(StringconnectionString, boolpromptforDelete) {
   try {
      
      // Establish a connection to the organization web service using CrmConnection.
      Microsoft.Xrm.Client.CrmConnection connection =
         CrmConnection.Parse(connectionString);
      
      // Obtain an organization service proxy.
      // The using statement assures that the service proxy will be properly disposed.
      using(_orgService = new OrganizationService(connection)) {

         //Create any entity records this sample requires.
         CreateRequiredRecords();
         
         // Obtain information about the logged on user from the web service.
         Guid userid = ((WhoAmIResponse)_orgService.Execute(new WhoAmIRequest())).UserId;
         SystemUser systemUser = (SystemUser)_orgService.Retrieve("systemuser",userid,
            new ColumnSet(newstring[]{"firstname","lastname"}));
         
         Console.WriteLine("Logged on user is {0} {1}.",
            systemUser.FirstName,systemUser.LastName);

         // Retrieve the version of Microsoft Dynamics CRM.
         RetrieveVersionRequest versionRequest = new RetrieveVersionRequest();
         RetrieveVersionResponse versionResponse =
            (RetrieveVersionResponse)_orgService.Execute(versionRequest);
         Console.WriteLine("Microsoft Dynamics CRM version {0}.",
            versionResponse.Version);
         
         // Instantiate an account object. Note the use of option set
         enumerations defined in OptionSets.cs.
         
         // Refer to the Entity Metadata topic in the SDK documentation to
         determine which attributes must
         
         // be set for each entity.
         Account account = new Account{Name = "Fourth Coffee"};
         account.AccountCategoryCode = new OptionSetValue(
            (int)AccountAccountCateg oryCode.PreferredCustomer);
         account.CustomerTypeCode = new OptionSetValue(
            (int)AccountCustomerTypeCod e.Investor);
         
         // Create an account record named Fourth Coffee.
         _accountId = _orgService.Create(account);
         Console.Write("{0} {1} created, ",account.LogicalName,account.Name);
         
         // Retrieve the several attributes from the new account.
         ColumnSet cols = new ColumnSet(
            new String[]{"name","address1_postalcode","lastusedincampaign"});
         Account retrievedAccount =
            (Account)_orgService.Retrieve("account", _accountId, cols);
         Console.Write("retrieved, ");

         // Update the postal code attribute.
         retrievedAccount.Address1_PostalCode = "98052";

         // The address 2 postal code was set accidentally, so set it to null.
         retrievedAccount.Address2_PostalCode = null;

         // Shows use of a Money value.
         retrievedAccount.Revenue = new Money(5000000);

         // Shows use of a Boolean value.
         retrievedAccount.CreditOnHold = false;
         
         // Update the account record.
         _orgService.Update(retrievedAccount);
         Console.WriteLine("and updated.");
         
         // Delete any entity records this sample created.
         DeleteRequiredRecords(promptforDelete);
      } 
   } 
   // Catch any service fault exceptions that Microsoft Dynamics CRM throws.
   catch(FaultException<microsoft.xrm.sdk.organizationservicefault>) {

      // You can handle an exception here or pass it back to the calling method.
      throw;
   }
}

Step 4- Este método demonstra basicamente todas as operações CRUD usando serviços web de CRM. O código primeiro cria uma instância de organização, em seguida, cria um registro de conta, atualiza o registro criado e, finalmente, o exclui. Vejamos os componentes importantes desse código. Para ver as mudanças em movimento no CRM quando este código é executado, você pode depurar esse código passo a passo (como discutiremos abaixo) e simultaneamente ver as mudanças no CRM.

Step 4.1 - Estabelece a conexão com a organização usando a string de conexão que modificamos em Step 2.

Microsoft.Xrm.Client.CrmConnection connection = CrmConnection.Parse(connectionString);

Step 4.2 - Obtém uma instância de proxy do serviço web da organização CRM.

_orgService = new OrganizationService(connection)

Step 4.3 - Cria um novo objeto de entidade Conta e define seu Nome, AccountCategoryCode e CustomerTypeCode.

Account account = new Account{Name = "Fifth Coffee"}; 
account.AccountCategoryCode = new OptionSetValue(
   (int)AccountAccountCategoryCode.P referredCustomer); 
account.CustomerTypeCode = new OptionSetValue(
   (int)AccountCustomerTypeCode.Investor);

Step 4.4 - Cria o novo registro usando o método Criar do serviço de organização.

_accountId = _orgService.Create(account);

Se você navegar até o CRM, verá um registro de conta recém-criado.

Step 4.5 - Depois que a conta é criada, o serviço recupera o registro do CRM usando o método de serviço da web Retrieve.

ColumnSet cols = new ColumnSet(new String[]{
   "name","address1_postalcode","lastusedincampaign"}); 
Account retrievedAccount = 
   (Account)_orgService.Retrieve("account", _accountId, cols);

Step 4.6 - Depois de ter o registro recuperado, você pode definir o valor atualizado do registro.

retrievedAccount.Address1_PostalCode = "98052"; 
retrievedAccount.Address2_PostalCode = null; 
retrievedAccount.Revenue = new Money(5000000); 
retrievedAccount.CreditOnHold = false;

Step 4.7 - Depois de definir o valor atualizado do registro, atualize o registro de volta no banco de dados do CRM usando o método de serviço da web de atualização.

_orgService.Update(retrievedAccount);

Se você abrir o registro no CRM, verá esses valores atualizados lá.

Step 4.8 - Por fim, exclua o registro usando o método Excluir serviço da web.

_orgService.Delete(Account.EntityLogicalName, _accountId);

Se agora você atualizar o mesmo registro no CRM, verá que o registro não está mais disponível, pois já foi excluído.

Conclusão

Neste capítulo, lidamos com dois importantes serviços da web fornecidos pelo CRM e um exemplo prático de como esses serviços da web podem ser usados ​​a partir de um aplicativo externo para realizar várias operações CRUD.

As soluções fornecem uma estrutura para empacotar, instalar e desinstalar componentes para corresponder às suas funcionalidades de negócios. As soluções permitem que os personalizadores e desenvolvedores criem, empacotem e mantenham unidades de software que estendem o CRM. Quaisquer personalizações, extensões ou configurações realizadas no CRM são empacotadas, gerenciadas e distribuídas por meio de soluções. As soluções podem ser exportadas como um arquivo zip da organização de origem, que pode então ser importado na organização de destino.

Para entender isso, considere os seguintes cenários de exemplo -

  • Você, como desenvolvedor ou personalizador, estendeu ou personalizou o CRM no ambiente de desenvolvimento. Agora você deseja empacotar suas alterações e movê-las para o próximo ambiente. Para isso, você pode criar soluções individuais e publicá-las em ambientes superiores.

  • Você, como um provedor de CRM terceirizado, criou um módulo de CRM, que permite gerenciar dados em entidades do Microsoft Dynamics CRM usando APIs de serviço da Web externas. Agora, você deseja vender este módulo para outros clientes. Usando soluções, você pode empacotar este módulo e distribuí-los para outros clientes que poderão instalar esta solução e utilizar as funcionalidades fornecidas pelo seu módulo.

Tipos de Soluções

Solução de sistema padrão

A solução do sistema contém os componentes da solução prontos para uso definidos no Microsoft Dynamics CRM sem nenhuma personalização. Muitos dos componentes da solução do sistema são personalizáveis ​​e podem ser usados ​​em soluções gerenciadas ou personalizações não gerenciadas.

Ao longo deste tutorial, não criamos nenhuma solução e estávamos customizando a solução de sistema padrão. Se você se lembra, fomos para Configurações → Personalizações → Personalizar o sistema. Esta opção personaliza diretamente a solução padrão.

Solução Gerenciada

Uma solução gerenciada é uma solução concluída e destinada a ser distribuída e instalada. As soluções gerenciadas podem ser instaladas na parte superior da solução do sistema ou outras soluções gerenciadas.

Important Points -

  • Se você exportar uma solução gerenciada de uma organização e importá-la para outra, não poderá editar a solução na nova organização.

  • Uma solução gerenciada não faz referência direta à solução do sistema.

  • A desinstalação de uma solução gerenciada desinstala todas as personalizações associadas à solução.

  • Por padrão, uma solução gerenciada não pode ser personalizada na organização de destino. No entanto, usando o conceito de propriedades gerenciadas, você pode definir se um componente da solução será personalizável e, em caso afirmativo, quais partes específicas do componente serão personalizáveis ​​quando a solução for exportada como uma solução gerenciada.

Solução Não Gerenciada

Uma solução não gerenciada é uma solução que ainda está em desenvolvimento e não se destina a ser distribuída. Uma solução não gerenciada contém todas as personalizações não gerenciadas dos componentes do CRM, incluindo quaisquer componentes adicionados, modificados, removidos ou excluídos. Por padrão, qualquer nova solução é uma solução não gerenciada. No entanto, você pode exportar uma solução não gerenciada como uma solução gerenciada ou não gerenciada.

Important Points -

  • Se você exportar uma solução não gerenciada de uma organização e importá-la para outra, poderá editar a solução na nova organização.

  • Uma solução não gerenciada faz referência direta à solução do sistema. Portanto, as alterações feitas em uma solução não gerenciada serão aplicadas a todas as soluções não gerenciadas que fazem referência aos mesmos componentes, incluindo a solução do sistema.

  • Se você excluir um componente da solução de uma solução não gerenciada, o componente será excluído permanentemente do sistema e não estará mais disponível. Caso você queira apenas remover o componente de uma solução não gerenciada específica, use remove em vez de delete.

  • Desinstalar uma solução não gerenciada não remove as personalizações associadas. Ele apenas exclui a solução do sistema, mas as alterações feitas ainda estarão lá.

Componentes da Solução

Uma solução pode ser usada para empacotar os seguintes componentes que podem ser personalizados usando soluções padrão, não gerenciadas ou gerenciadas.

Tipo de Componente Componente
Esquema Entidades
Atributos
Relacionamentos
Conjuntos de opções globais
Interface de usuário Application Ribbon
Mapa do site
Formulários
Fitas de Entidade
Recursos da Web
Analytics Dashboards
Relatórios
Visualizações
Processo / Código Processos
Diálogos
Workflows
Plugins
Assembléias
Etapas de processamento
Modelos Mala direta
O email
Contrato
Artigo
Segurança Funções de segurança
Perfis de segurança de nível de campo

Criação de uma solução

Step 1- Navegue até Configurações → Soluções. Clique em Novo.

Step 2 - Na janela seguinte, insira os seguintes detalhes e clique em Salvar e Fechar.

Display Name - Solução de amostra (pode ser qualquer nome que você desejar).

Name- Será definido automaticamente com base no nome de exibição. No entanto, você pode mudar isso.

Publisher- Editor padrão. O editor da solução fornece um prefixo de customização comum e um prefixo de valor de opção. Definir um editor de solução controla como suas soluções gerenciadas podem ser atualizadas depois de distribuídas. No entanto, para este exemplo e para a maioria dos casos gerais, você pode definir isso como Editor padrão.

Version- Especifique uma versão com o seguinte formato: major.minor.build.revision. Por exemplo: 1.0.0.0.

Por padrão, cada solução é adicionada como uma solução não gerenciada. Depois que uma solução é adicionada, você pode adicionar componentes da solução criando-os no contexto desta solução ou adicionando os componentes existentes de outras soluções. Por exemplo, você pode criar novas entidades, formulários, etc. no contexto desta nova solução.

Exportando uma solução

Depois de fazer todas as alterações que deseja empacotar como uma solução gerenciada ou não gerenciada, você pode exportar sua solução da seguinte maneira.

Step 1- Abra a organização de origem e navegue até Configurações → Soluções. Selecione a solução que deseja exportar e clique no botão Exportar.

Step 2 - Na janela Publicar personalizações, clique em Publicar todas as personalizações e em Avançar.

Step 3- Na janela a seguir, você pode selecionar opcionalmente qualquer configuração do sistema, como numeração automática, configurações de calendário, etc., a ser exportada com a solução. Por enquanto, você pode evitar selecionar qualquer opção e clicar em Avançar.

Step 4- Na janela Tipo de pacote, você pode selecionar se deseja exportar o pacote como uma solução gerenciada ou não gerenciada. Para este exemplo, vamos exportá-lo como não gerenciado. Quando terminar, clique em Avançar.

Step 5- Na próxima janela, você pode ver a versão de origem do CRM que está usando e pode selecionar a versão de destino. Clique em Exportar.

Step 6- Depois de clicar em Exportar, a solução será exportada como um arquivo zip. Salve este arquivo zip em um local desejado em seu sistema.

Importando uma Solução

Agora, importaremos o arquivo zip da solução que exportamos na seção anterior para uma nova organização de destino.

Step 1- Abra a organização de destino e navegue até Configurações → Soluções. Clique em Importar.

Step 2 - Navegue pelo arquivo zip que você baixou na etapa de exportação e clique em Next.

Step 3- Na próxima janela, você pode visualizar os detalhes do pacote de solução, se necessário. Clicar em Importar iniciará o processo de importação da solução.

Step 4- Assim que o processo de importação for concluído, ele mostrará o status de sucesso ou falha. Se o processo for bem-sucedido, clique em Publicar todas as personalizações. Caso a importação da solução falhe, ele fornecerá um log de erro detalhado em qual etapa do processo de importação falhou.

Step 5- Terminamos. A solução será importada com sucesso para a organização de destino. Clique em Fechar.

Resolução de Conflitos

Como você pode ter vários desenvolvedores trabalhando na personalização e ampliação do CRM, terá várias soluções gerenciadas e não gerenciadas. Exportar e importar essas soluções pode às vezes resultar em cenários de conflito. Por exemplo, suponha que 'Solução A' contenha um campo em um formulário, enquanto 'Solução B' removeu o campo e 'Solução C' renomeou o campo. Nesse cenário, qual seria a mudança final? Em tais cenários conflitantes, o CRM usa duas abordagens.

Merge- Essa abordagem é usada para componentes da interface do usuário, como barra de comando, fitas e mapas do local. De acordo com essa abordagem, os componentes da solução são recalculados da parte inferior e as personalizações não gerenciadas da organização são as últimas a serem aplicadas.

Top Wins- Essa abordagem é usada para todos os outros cenários de conflito, exceto os componentes da interface do usuário. De acordo com essa abordagem, a última alteração (gerenciada ou não gerenciada) tem a prioridade e é aplicada.

Conclusão

Neste capítulo, apresentamos o conceito de soluções e diferentes tipos de solução e seus componentes. Em seguida, aprendemos como criar, exportar e importar uma solução. Finalmente, estudamos sobre as duas estratégias de resolução de conflitos, que ocorrem quando temos várias soluções gerenciadas e não gerenciadas afetando os mesmos componentes da solução.