Как синхронизировать базу данных On-prem с Dynamics 365 Online

Ана Нето Новости компании, Продукты и решения, Технический 3 Комментарии

Последнее обновление статьи: 05 мая 2020 года

Растущая компания использует Microsoft Dynamics CRM на местах, интегрированную с ERP (Dynamics NAV), SharePoint и учетной системой. Конечно, они видят преимущества перехода на D365 в режиме онлайн и Azure cloud. Но Microsoft не предоставляет практического решения для синхронизации локальных баз данных Dynamics CRM с Dynamics 365 в режиме онлайн.Таким образом, если Microsoft не помогает, как они могут синхронизировать данные с Dynamics 365? Вот их решение для подключения к базе данных Dynamics 365.

Move Dynamics CRM On-prem на D365 Online

Хотя все еще возможно иметь Dynamics 365 на установке в помещенииПереход от Microsoft Dynamics CRM на местах к Dynamics 365 онлайн кажется более привлекательным для большинства компаний в эти дни.

Как они рассматривают Dynamics 365 онлайн против помещения, они видят. Программное обеспечение как услуга (SaaS) модели Dynamics 365 онлайн приносит явные преимущества:

  • Вам не нужно приобретать аппаратное обеспечение или инфраструктуру, и вам не нужно ее обслуживать;
  • Лицензия на программное обеспечение, как правило, предоставляется на основе текущей модели оплаты по факту, а не на основе крупной одноразовой покупки одного места;
  • Часто SaaS предлагает универсальный доступ, позволяющий подключаться к программному обеспечению с любого устройства (настольного, ноутбука, мобильного телефона) из любого места, где есть подключение к Интернету;
  • Начальная цена, как правило, значительно ниже, чем при покупке оборудования и программного обеспечения на месте;
  • Высокая доступность SLA (т.е. Microsoft Dynamics 365 99.9% время безотказной работы SLA)

Итак, синхронизация местных баз данных с Dynamics 365 онлайн должна быть довольно простой, не так ли?

В идеале, для миграции с Microsoft Dynamics CRM On-Premises на D365 онлайн, вы сможете передавать данные непосредственно с локальной SQL базы данных Microsoft Dynamics CRM backend в удаленную базу данных Microsoft D365 SQL. И если, случайно, у вас уже есть D365 и вы хотите мигрировать Dynamics 365 в помещение в режиме онлайн, это должно быть еще более простым делом.

На практике, однако, это не так просто.

Что вы получите от Microsoft, чтобы перейти на Dynamics 365 онлайн

В настоящее время, чтобы помочь клиентам развернуть облачные решения Microsoft, Microsoft предлагает поддержку через страницу FastTrack. Клиенты, имеющие соответствующую подписку на Microsoft 365, Dynamics 365 или Azure, могут использовать FastTrack без дополнительной оплаты в течение всего срока действия подписки (ссылка в конце статьи). Вам нужно проверить текущие критерии правомочности для того, что вы пытаетесь перенести. Microsoft иногда основывает это на количестве мест, иногда на доходах.

В апреле 2019 года компания Microsoft также выпустила "Microsoft Dynamics CRM on-premises to Dynamics 365 Online Migration", 45-страничный PDF-документ, в котором описывается, что нужно сделать (ссылка для скачивания в конце статьи). В этом документе они признаются, что "до недавнего времени не существовало механизма, позволяющего клиентам легко перевести свое локальное развертывание на Dynamics 365 (онлайн)".

Проблемы с синхронизацией On-prem с онлайн базами данных

Вы думаете, что идеальным решением будет синхронизация баз данных Dynamics 365 с Вашим Dynamics CRM в режиме реального времени.

Проблема заключается в том, что, как правило, раскрытие внутренних баз данных SaaS-сервисов для внешнего мира считается плохой практикой и может принести значительные риски для безопасности. Поэтому компания Microsoft не предоставляет доступ к внутренней базе данных D365 в режиме онлайн. Вместо этого, для выполнения взаимодействия данных с D365 в режиме онлайн, Microsoft предлагает официальные службы API.

Услуги API приносят пользу, не нарушая внутренних бизнес-правил и ограничений. Таким образом, сервисы API гарантируют, что клиентские приложения не будут препятствовать производительности. Более того, они помогают сохранить целостность данных и целостность внутренней базы данных.
Разработка процессов манипулирования данными через API требует навыков программирования и времени. В частности, время на то, чтобы покопаться в документации, чтобы установить правильные параметры и сделать соответствующие вызовы методам или функциям, предоставляемым такими интерфейсами.

Что, если бы вы могли просто использовать свои знания SQL и взаимодействовать с D365 API так же, как и с обычной СУБД (системой управления базами данных)?

Что, если бы можно было синхронизировать базу данных с SQL Server Management Studio по протоколу Dynamics 365?

Подключитесь к D365 онлайн с локальной СУБД или любого клиентского приложения.

Добро пожаловать в наш коллектив.D365 Database Sync Solution! Это специальное решение для синхронизации местных баз данных с облаком D365. Оно основано на интеграционной платформе Connecting Software Connect Bridge.

Connect Bridge преобразует синтаксис SQL стандарта ANSI в соответствующие вызовы API. Обеспечивая доступ к данным с помощью вызовов API (хотя вам и не нужно об этом беспокоиться), вы защищаете целостность вашей целевой системы. Кроме того, вы также получаете простоту связи с любой целевой системой через стандартные утверждения SELECT, INSERT, UPDATE и DELETE.

Поэтому из локальной СУБД или любого клиентского приложения можно подключиться к D365 в режиме онлайн и вносить в нее данные.

Для компаний, осуществляющих миграцию с Dynamics CRM on-prem на D365 online, это особенно удобно в ситуациях, когда целые процессы были написаны с использованием SQL Database on-prem. К счастью, теперь их можно повторно использовать, добавив Connect Bridge в свое портфолио.

Настало время для практического примера.

Из любой базы данных в Dynamics 365 Онлайн

В этом примере мы будем использовать знаменитую базу данных Adventure Works DW (Datawarehouse) от Microsoft (скачать его здесь). Мы продемонстрируем, как можно легко интегрировать существующие процессы с Microsoft Dynamics 365 Online (информация здесь) с использованием платформы Connect Bridge.

Если вы используете SSMS (SQL Server Management Studio) для администрирования базы данных SQL Server, вы можете посмотреть схему базы данных в окне Object Explorer.

Схема базы данных в окне проводника объектов

платформа 1ТП16Т позволяет вам создавать соединения Linked Server с любой целевой системой через коннекторы без особых усилий. Доступно более 400 разъемов. Мы сосредоточимся на разъеме Dynamics 365. Ниже приведен выбор разъемов в области CRM/ERP/Accounting.

Коннекторы - CRM / ERP / Бухгалтерская область

Ниже вы можете найти Связанное соединение с сервером, уже созданное в SSMS.

Связанное соединение с сервером, уже созданное в SSMS

Обратите внимание, что мы специально назвали соединение со связанным сервером следующим образомD365_CRM.Таким образом, расширяя узел каталогов в TreeView, мы можем видеть всю схему, предоставляемую Dynamics 365, точно так же, как вы бы увидели, получив доступ к традиционной базе данных.

Благодаря этому вы можете создавать любые виды интеграции или настраивать любые существующие процессы, используя удобство использования.

Применимость решения для синхронизации облачных вычислений On-prem to D365 Cloud Sync Solution

А теперь, возможно, вы задаетесь вопросом: зачем мне вообще это делать?

Вот два общих сценария, к которым вы можете относиться.

Сценарий 1:

Я работаю в компании, которая использует Microsoft Dynamics CRM On-Premises, и мы находимся в процессе перехода на Microsoft Dynamics 365 Online. У нас есть несколько интеграций непосредственно из наших баз данных SQL Server в базу данных SQL Server Microsoft Dynamics CRM On-Premises.

Но я не могу напрямую подключиться к базе данных Microsoft Dynamics 365 Online:

  • Придется ли мне создавать с нуля все свои процессы с помощью Dynamics CRM SDK от Microsoft?
  • Придется ли мне создавать с нуля все свои процессы с помощью Web API?
  • Нужно ли мне учиться C#, чтобы сделать все это?

Сценарий 2:

Я работаю в компании, которая имеет собственную ERP-систему с базой данных SQL Server в качестве бэкэнда. Мы решили использовать Microsoft Dynamics 365 CRM в качестве системы управления взаимоотношениями с клиентами.

Мы хотели бы иметь возможность автоматизировано заполнять CRM существующими данными из нашей ERP-системы и поддерживать согласованность обеих сторон.

Сделать это вручную кажется практически невозможным, так как речь идет о десятках тысяч записей на субъект (Аккаунты, Контакты, Продукты и т.д.). Также удобно работать с языком SQL (Structured Query Language).

Однако мы не имеем глубокого опыта работы с другими языками программирования и фреймворками (C#, Web API, Rest Services и т.д.):

  • Придется ли нам нанимать консалтинговую компанию, чтобы сделать это за нас?
  • Буду ли я зависеть от этой консалтинговой компании в поддержании и добавлении новых возможностей по мере изменения/развития моего бизнеса?

К счастью, ответ за все вышесказанное - нет. В этот момент использование вышеприведенного примера может быть звонком в колокол.

С помощью представленного подхода вы можете массово использовать существующие навыки и процессы.

Ты еще не убежден? Почему бы вам не проверить пошаговый пример ниже?

Пополнение онлайн-аккаунтов Dynamics 365 из таблицы DimCustomer базы данных Adventure Works.

Подготовка
Создайте следующие триггеры:

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

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


Теперь окно проводника объектов SSMS должно содержать 2 новых триггера:

два новых триггера в окне проводника объектов SSMS

Откройте свой экземпляр Dynamics 365 Online и перейдите в модуль "Продажи -> Счета".

Dynamics 365 Счета

Тестирование:

В SSMS откройте новое окно запроса и вставьте следующее:


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’;


Запустите скрипты, нажав F5 или кнопку Execute в SSMS.

Теперь в таблицу DimCustomer необходимо вставить 3 дополнительные записи.

три дополнительные записи, вставленные в таблицу DimCustomer.

Вернитесь к Dynamics 365 Продажи -> Счета и обновите экран. Бинго!

три новых аккаунта, созданных в Dynamics 365

3 новых аккаунта были созданы в Dynamics 365, круто, да?

Но подождите там, в таблице DimCustomer поле CustomerAlternateKey имеет странный номер. Это не те значения, которые мы вставили.

Вместо этого у нас есть уникальный идентификатор учетной записи, сгенерированной в Dynamics 365. Как это возможно?

Если вы внимательно посмотрите на триггер OnDimCustomerInsert, то заметите, что функция SELECT SCOPE_IDENTITY(); отвечает за возврат идентификатора учетной записи, который будет использоваться для обновления таблицы DimCustomer.

Это будет иметь решающее значение для выполнения обновлений на существующих счетах в Dynamics 365 при изменении записи в таблице DimCustomer.

Чтобы доказать нашу правоту, обновите созданные записи, выполнив в СУБД следующий код:

После выполнения обновлений для 3-х учетных записей здесь результат 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 Учетные записи после выполнения обновлений

Мило!

Заключение

Примеры, приведенные выше, очень просты, однако нетрудно представить себе преимущества такого подхода.

  • Обслуживание процесса централизовано и изолировано
  • Улучшение процесса за счет модификации триггеров - это ветер.
  • Нет необходимости учить новую технологию / язык программирования

Вот так. Надеюсь, тебе понравилось.

Если у вас есть комментарии, предложения, напишите их в поле ниже, и мы ответим вам как можно скорее.

Я надеюсь, что вы получите столько же удовольствия от использования платформы Connect Bridge, сколько я написал в этой статье.

Почему клиенты используют Connect Bridge

Посмотри короткое видео, чтобы узнать:

Connect Bridge презентационный видеоролик

Последнее обновление статьи: 05 мая 2020 года

Ана Нето - Технический советник, автор.

Ана Нето
технический консультант 1ТП17Т

Автор:

Я работаю инженером-разработчиком программного обеспечения с 1997 года, с недавней любовью к письму и публичным выступлениям.  У вас есть вопросы или комментарии по поводу данного сообщения или по поводу Connect Bridge? С удовольствием выслушаю ваши отзывы!

 ana@connecting-software.com


Соавтор: Джефферсон Кенджи Такахаши, MBA.

Комментарии 3

  1. Выглядит интересно - как насчет внедрения бизнес-правил, например, у нас есть потребность в получении транзакций из наших POS-терминалов (данные в таблицах SQL) в Business Central - так как насчет варианта использования, когда в продаже задействован клиент или продукт, которого нет в D365?

  2. Post
    Автор

    Привет, Пол,

    Если вы можете получить данные из вашего POS-терминала в таблицах SQL, и они следуют структуре, которую вы можете понять, то вы можете использовать Connect Bridge чтобы все попало в "Бизнес-Центр". Если в продаже участвует покупатель или продукт, которого нет в D365, вам нужно решить, что делать, например, вы можете использовать общего покупателя или продукт, или вы можете создавать новые на лету.

    Мы свяжемся с вами через электронную почту, которую вы указали, чтобы изучить эту опцию с вами.

    Ана Нето

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *