Como sincronizar uma base de dados local com o Dynamics 365 Online

Ana Neto Notícias da empresa, Produtos e Soluções, Técnico 3 Comentários

Artigo atualizado pela última vez: 05 de maio de 2020

Uma empresa em crescimento tem utilizado Microsoft Dynamics CRM on-premises, integrado com seu ERP (Dynamics NAV), SharePoint e um sistema de contabilidade. Claro, eles vêem os benefícios da mudança para o D365 online e para a nuvem Azure. Mas a Microsoft não está fornecendo uma solução prática para sincronizar as bases de dados do Dynamics CRM on-premises com o Dynamics 365 online.If A Microsoft não ajuda, como eles podem sincronizar os dados com o Dynamics 365? Aqui está a solução deles para se ligarem à base de dados do Dynamics 365.

Move Dynamics CRM On-prem para D365 Online

Embora ainda seja possível ter um Dynamics 365 na premissa de implantaçãoA migração do Microsoft Dynamics CRM on-premises para o Dynamics 365 online parece mais atraente para a maioria das empresas hoje em dia.

Como eles consideram o Dynamics 365 online vs. premissa, eles vêem o modelo de Software como Serviço (SaaS) do Dynamics 365 online traz benefícios claros:

  • Não é necessário adquirir hardware ou infra-estrutura e não é necessário mantê-la;
  • O software é tipicamente licenciado num modelo de pagamento por encomenda, em vez de uma grande compra única, por lugar;
  • SaaS oferece frequentemente acesso universal, permitindo-lhe ligar-se ao software a partir de qualquer dispositivo (desktop, portátil, telemóvel) a partir de qualquer lugar que tenha uma ligação à Internet;
  • O preço inicial é geralmente consideravelmente inferior ao da compra de equipamento e software no local;
  • SLA de Alta Disponibilidade (ou seja, Microsoft Dynamics 365 99.9% uptime SLA)

Então, a sincronização de bases de dados no local com o Dynamics 365 online deve ser muito fácil, certo?

Idealmente, para migrar do Microsoft Dynamics CRM On-Premises para o D365 online, você seria capaz de transferir os dados diretamente do backend local do Microsoft Dynamics CRM SQL Database para o remoto Microsoft D365 SQL database. E se, por acaso, você já tinha o D365 e queria migrar o Dynamics 365 no local para o online, deveria ser ainda mais simples.

Na prática, porém, não é tão simples assim.

O que você recebe da Microsoft para mudar para o Dynamics 365 online

Atualmente, para ajudar os clientes a implantar as soluções em nuvem da Microsoft, a Microsoft oferece suporte através da página FastTrack. Clientes com subscrições elegíveis para o Microsoft 365, Dynamics 365 ou Azure, podem utilizar o FastTrack sem custos adicionais durante a duração da sua subscrição (link no final do artigo). Você precisa verificar os critérios de elegibilidade atuais para o que você está tentando migrar. A Microsoft às vezes o baseia no número de assentos, às vezes na receita.

Em abril de 2019, a Microsoft também lançou "Microsoft Dynamics CRM on-premises to Dynamics 365 Online Migration", um documento PDF de 45 páginas que descreve o que você precisa fazer (link para download no final do artigo). Neste documento, eles confessam que "Até recentemente, não havia nenhum mecanismo disponível para os clientes moverem facilmente sua implantação no local para o Dynamics 365 (online)".

Problemas para Sincronizar On-prem com Bases de Dados Online

Você está pensando que a solução ideal seria encontrar uma sincronização de banco de dados Dynamics 365 com seu Dynamics CRM on-prem.

O problema é que, geralmente, a exposição de bases de dados back-end de serviços SaaS ao mundo exterior é considerada uma má prática e pode trazer riscos de segurança consideráveis. Portanto, a Microsoft não fornece acesso ao banco de dados back-end da D365 online. Em vez disso, para realizar interação de dados com o D365 online, a Microsoft oferece os serviços API oficiais.

Os serviços API trazem o benefício de não quebrar as regras e restrições internas do negócio. Desta forma, os serviços API garantem que as aplicações clientes não prejudiquem o desempenho. Além disso, eles ajudam a preservar a integridade e a consistência dos dados do banco de dados back-end.
Desenvolver processos para manipular dados através de API's requer habilidades de programação e tempo. Em particular, tempo para escavar na documentação para definir os parâmetros corretos e fazer as chamadas apropriadas para os métodos ou funções fornecidas por tais interfaces.

E se você pudesse simplesmente aproveitar suas habilidades SQL e interagir com o D365 API como faria com um SGBD (sistema de gerenciamento de banco de dados) normal?

E se você pudesse ter apenas o Dynamics 365 sincronizando a base de dados com o SQL Server Management Studio?

Conecte-se ao D365 Online a partir do SGBD local ou de qualquer aplicativo de cliente

Bem-vindo toD365 Database Sync Solution! Esta é uma solução específica para sincronizar bases de dados no local com a nuvem D365. Ela é baseada na plataforma de integração Connecting Software Connect Bridge.

Connect Bridge traduz a sintaxe SQL padrão ANSI para as chamadas API apropriadas. Ao assegurar o acesso aos dados é feito com chamadas API (embora você não tenha que se preocupar com isso) mantém a integridade do seu sistema de destino protegida. Além disso, você também obtém a facilidade de comunicação com qualquer sistema de destino através das instruções padrão SELECT, INSERT, UPDATE e DELETE.

Portanto, a partir do seu SGBD local ou de qualquer aplicação cliente, você pode se conectar ao D365 online e colocar dados nele.

Para empresas que migram do Dynamics CRM on-prem para o D365 online é especialmente útil em situações em que tinham processos completos escritos contra a base de dados SQL on-prem. Felizmente, agora eles podem ser reutilizados adicionando Connect Bridge ao seu portfólio.

Agora é hora de um exemplo prático.

De qualquer base de dados para o Dynamics 365 Online

Neste exemplo vamos utilizar a famosa base de dados Adventure Works DW (Datawarehouse) da Microsoft (baixe aqui). Vamos demonstrar como você pode facilmente integrar seus processos existentes com o Microsoft Dynamics 365 Online (informações aqui) utilizando a plataforma Connect Bridge.

Se você estiver usando SSMS (SQL Server Management Studio) para administrar o seu banco de dados SQL Server, você pode ver o esquema do banco de dados na janela do Object Explorer.

Esquema do banco de dados na janela do Object Explorer

Plataforma Connect Bridge permite criar conexões Linked Server para qualquer sistema alvo através de conectores de forma simples e sem esforço. Existem mais de 400 conectores prontamente disponíveis. Nós vamos nos concentrar no conector Dynamics 365. Abaixo está uma selecção dos conectores na área CRM/ERP/Contabilidade.

Conectores - Área CRM / ERP / Contabilidade

Abaixo você pode encontrar a conexão Linked server já criada no SSMS.

Conexão com servidor vinculado já criada no SSMS

Note que nomeamos propositadamente o servidor vinculado connectionD365_CRM.And, ao expandir o nó de catálogos no TreeView, podemos ver todo o esquema fornecido pelo Dynamics 365, tal como você veria ao acessar uma base de dados tradicional.

Com isso no lugar, você é capaz de criar qualquer tipo de integração ou personalizar qualquer processo existente, alavancando a usabilidade.

Aplicabilidade do On-prem à solução D365 Cloud Sync

Agora, você pode estar se perguntando: por que eu precisaria fazer isso em primeiro lugar?

Aqui estão dois cenários comuns com os quais você pode se relacionar.

Cenário 1:

Estou trabalhando para uma empresa que utiliza Microsoft Dynamics CRM On-Premises, e estamos em processo de migração para o Microsoft Dynamics 365 Online. Temos várias integrações diretamente das nossas bases de dados SQL Server para a base de dados SQL Server do Microsoft Dynamics CRM On-Premises.

Mas, eu não consigo me conectar diretamente com o banco de dados Microsoft Dynamics 365 Online:

  • Terei que criar do zero todos os meus processos usando o Dynamics CRM SDK da Microsoft?
  • Terei que criar do zero todos os meus processos usando a Web API?
  • Tenho de aprender o C# para fazer tudo isto?

Cenário 2:

Estou trabalhando para uma empresa que tem um sistema ERP proprietário com um banco de dados SQL Server como backend. Nós decidimos adotar o Microsoft Dynamics 365 CRM como nosso Sistema de Gerenciamento de Relacionamento com o Cliente.

Gostaríamos de poder preencher o CRM com os dados existentes do nosso sistema ERP de forma automatizada e manter ambos os lados consistentes.

Fazer isto manualmente parece quase impossível, pois estamos a falar de dezenas de milhares de registos por entidade (Contas, Contactos, Produtos, para citar alguns). Além disso, é confortável trabalhar com a linguagem SQL (Structured Query Language).

No entanto, não temos experiência profunda com outras linguagens de programação e frameworks (C#, Web API's, Rest Services, etc.):

  • Teremos que contratar uma empresa de consultoria para fazer isso por nós?
  • Vou depender desta empresa de consultoria para manter e acrescentar novas funcionalidades à medida que o meu negócio muda / cresce?

Felizmente, a resposta para tudo o que foi dito acima é não. Neste ponto, o uso do exemplo acima pode estar tocando uma campainha.

Com a abordagem apresentada você pode alavancar suas habilidades e processos existentes massivamente.

Ainda não estás convencido? Por que você não verifica o exemplo passo a passo abaixo?

População Dynamics 365 Contas Online da Tabela DimCustomer da Adventure Works Database.

Preparação
Crie os seguintes gatilhos:

–*****************************************************************************

CREATE TRIGGER [dbo].[OnDimCustomerInsert] ON [dbo].[DimCustomer] AFTER INSERT

AS

BEGIN

       SET                               NOCOUNT ON

 

       DECLARE @SQL                      VARCHAR(255)

       DECLARE @AccountId                VARCHAR(255)

       DECLARE @FirstName                VARCHAR(255)

       DECLARE @LastName                 VARCHAR(255)

       DECLARE @MiddleName               VARCHAR(255)

      

       SELECT @FirstName       = [FirstName],

              @LastName        = [LastName],

              @MiddleName      = [MiddleName]

       FROM INSERTED;

       SELECT @SQL = FORMATMESSAGE(‘INSERT INTO ACCOUNT (Name) VALUES(”%s”); SELECT SCOPE_IDENTITY();’,

       @FirstName + ‘-‘ + ‘-‘ + @LastName)

      

       CREATE TABLE #AccountId(ID VARCHAR(255))

       INSERT #AccountId

       EXEC(@SQL) AT D365_CRM

 

       SELECT @AccountId = ID from #AccountId

       UPDATE DimCustomer SET CustomerAlternateKey = @AccountId where FirstName = @FirstName and MiddleName = @MiddleName and LastName = @LastName

 

       PRINT @FirstName + ‘ ‘ + @MiddleName + ‘ ‘ + @LastName;

END

–*****************************************************************************

CREATE TRIGGER [dbo].[OnDimCustomerUpdate] ON [dbo].[DimCustomer] AFTER UPDATE

AS

BEGIN

       SET                               NOCOUNT ON

 

       DECLARE @SQL                      VARCHAR(255)

       DECLARE @AccountId                VARCHAR(255)

       DECLARE @FirstName                VARCHAR(255)

       DECLARE @LastName                 VARCHAR(255)

       DECLARE @MiddleName               VARCHAR(255)

      

       SELECT @AccountId       = [CustomerAlternateKey],

              @FirstName       = [FirstName],

              @LastName        = [LastName],

              @MiddleName      = [MiddleName]

       FROM INSERTED;

 

       SELECT @SQL = FORMATMESSAGE(‘UPDATE ACCOUNT SET Name=”%s” WHERE ACCOUNTID=”%s”’, @FirstName + ‘-‘ + ‘-‘ + @LastName, @AccountId)

       EXEC(@SQL) AT D365_CRM;

       PRINT @FirstName + ‘ ‘ + @MiddleName + ‘ ‘ + @LastName;

 

END


Sua janela do SSMS Object Explorer deve conter agora 2 novos gatilhos como os seguintes:

dois novos gatilhos na janela do SSMS Object Explorer

Abra sua instância Dynamics 365 Online e navegue até o módulo Vendas -> Contas

Dynamics 365 Contas

A testar:

No SSMS abra uma nova janela de consulta e cole o seguinte:


INSERT INTO [AdventureWorksDW].[dbo].[DimCustomer] (FirstName, MiddleName, LastName, CustomerAlternateKey) values (‘ABC Technology’, ,‘GMB’, ‘CT0001’);

INSERT INTO [AdventureWorksDW].[dbo].[DimCustomer] (FirstName, MiddleName, LastName, CustomerAlternateKey) values (‘Billy Charity’, ,‘SA’, ‘CT0002’);

INSERT INTO [AdventureWorksDW].[dbo].[DimCustomer] (FirstName, MiddleName, LastName, CustomerAlternateKey) values (‘Tom Cat’, ,‘ORG’, ‘CT0003’);

 

SELECT * FROM DimCustomer WHERE FirstName = ‘ABC Technology’;

SELECT * FROM DimCustomer WHERE FirstName = ‘Billy Charity’;

SELECT * FROM DimCustomer WHERE FirstName = ‘Tom Cat’;


Execute os scripts pressionando F5 ou o botão Executar no SSMS.

Você deve ter agora 3 registros adicionais inseridos na Tabela DimCustomer.

três registros adicionais inseridos na Tabela DimCustomer

Navegue de volta ao seu Dynamics 365 Vendas -> Contas e atualize a tela. Bingo!

três novas contas criadas no Dynamics 365

3 novas contas foram criadas no Dynamics 365, certo?

Mas espera aí, na tabela DimCustomer o campo CustomerAlternateKey tem um número estranho. Não são os valores que inserimos em primeiro lugar.

Em vez disso, temos a identificação única da conta gerada no Dynamics 365. Como isso é possível?

Se você olhar atentamente para o gatilho OnDimCustomerInsert você notará que SELECT SCOPE_IDENTITY(); é o responsável por retornar o id da conta que será usada para atualizar a tabela DimCustomer.

Isso será crucial para realizar atualizações nas contas existentes no Dynamics 365 quando um registro for alterado na tabela DimCustomer.

Para provar nosso ponto de vista, atualize os registros criados executando no SSMS o seguinte código:

Depois de executar as atualizações para as 3 contas aqui é o resultado em Dynamics 365.

UPDATE [AdventureWorksDW].[dbo].[DimCustomer] SET LastName = ‘LTD’ WHERE CustomerAlternateKey = ‘account(9a1bc5cb-6ad7-e811-a96f-000d3a2cb90b)’;

NOTE: REPLACE THE STRING account(9a1bc5cb-6ad7-e811-a96f-000d3a2cb90b) WITH THE VALUES GENERATED IN YOUR ENVIRONMENT.

Dynamics 365 Contas após a execução de actualizações

Que bom!

Conclusão

Os exemplos acima são muito simples, porém, não é difícil visualizar os benefícios de tal abordagem.

  • A manutenção do processo é centralizada e isolada
  • Aprimorar o processo através da modificação dos gatilhos é uma brisa
  • Não há necessidade de aprender nenhuma nova tecnologia / linguagem de programação

É isso mesmo. Espero que tenhas gostado.

Se você tiver comentários, sugestões, escreva-os no espaço abaixo e nós responderemos o mais rápido possível.

Espero que se divirtam tanto usando a plataforma Connect Bridge como eu me diverti escrevendo este artigo.

Porque os clientes usam Connect Bridge

Assista a um pequeno vídeo para descobrir:

Connect Bridge vídeo de apresentação

Artigo atualizado pela última vez: 05 de maio de 2020

Ana Neto - Assessora técnica, autora

Ana Neto
technical conselheiro no Connecting Software

Autor:

Sou engenheiro de software desde 1997, com uma paixão mais recente por escrever e falar em público.  Você tem alguma pergunta ou comentário sobre este post ou sobre o Connect Bridge? Eu adoraria ter o seu feedback!

 ana@connecting-software.com


Contribuinte: Jefferson Kenji Takahashi, MBA

Comentários 3

  1. Parece interessante - e quanto à aplicação das regras do negócio? Por exemplo, temos a necessidade de obter transacções do nosso POS (dados em tabelas SQL) para a Business Central - e quanto ao caso de uso em que a venda envolve um cliente e ou produto que não existe na D365?

  2. Post
    Autor

    Olá, Paul,

    Se conseguir obter os dados que tem do seu POS nas tabelas SQL e seguir uma estrutura que possa compreender, então pode usar Connect Bridge para colocar tudo na Central de Negócios. Se a venda envolve um cliente e/ou produto que não existe na D365, você precisa decidir o que fazer, por exemplo, você poderia usar um cliente ou produto genérico ou você poderia criar novos na hora.

    Entraremos em contato através do e-mail que você indicou para explorar esta opção com você.

    Ana Neto

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *