文章最后更新于。2022年3月28日
让我们来看看以下内容 场景:
一家蓬勃发展的公司一直在使用微软Dynamics CRM,与他们的ERP(Dynamics NAV)、SharePoint和一个会计系统集成。
经过一些研究,他们认识到转移到Dynamics 365在线和Azure云的好处。然而,他们也发现微软并没有为他们的用户提供一个实用的解决方案,将数据库和所有其他现有的集成从Dynamics CRM转移到Dynamics 365 Online。
如果软件的创造者对这个问题没有答案,这家公司怎么能让自己的愿望成真?
我们自豪地推出他们的解决方案,可连接至Dynamics 365数据库……而无需实际连接数据库!
将Dynamics CRM On-Prem迁移到D365 Online
尽管有可能进行 Dynamics 365的内部部署, 可以说,目前对几乎所有企业而言,在线使用Dynamics 365都是最具吸引力的选择。.
当他们调查Dynamics 365在线与企业内部模式时,他们很快得出结论:Dynamics 365在线的软件即服务(SaaS)版本有以下好处。
- 减少压力 - 你不需要购买硬件或基础设施,也不需要维护它。
- 没有 承诺 - 该软件通常以持续的 "现收现付 "模式获得许可,而不是一次性的、按座位购买。
- 多才多艺 - SaaS通常提供通用访问,允许你从任何设备(台式机、笔记本电脑、手机)连接到软件,只要用户有互联网连接。
- 负担得起的 - 初始投资通常比购买企业内部设备和软件要低得多。
- 值得信赖 – 该云解决方案附带高可用性服务等级协议(SLA)。.
那么,将企业内部的数据库同步到Dynamics 365在线有多容易呢?
在一个完美的世界里从微软Dynamics CRM企业内部到Dynamics 365在线的迁移将很容易包括与微软Dynamics CRM企业内部的现有集成。如果你已经有了D365,并想通过Dynamics 365的前提下向云端迁移,这应该更简单。
然而,我们并不生活在一个完美的世界里。尽管如此,即使 迁移到云端并不像你希望的那样简单,有 可以帮助的技巧和窍门 一路相伴。让我们开始吧!
微软为您提供了哪些转到Dynamics 365在线的服务
有一个名为FastTrack的页面。 微软通过该平台为用户部署微软云解决方案提供支持。持有符合资格的Microsoft 365、Dynamics 365或Azure订阅的客户,可在整个订阅周期内免费使用该服务(文章末尾附链接)。因此,若您计划使用此服务,建议先确认您要迁移的对象是否符合最新资格标准。微软通常根据用户席位数量或收入水平来判定资格。.
2019年4月,微软承认“直到最近,客户尚无便捷机制将本地部署迁移至Dynamics 365(在线)环境”。 这一表态出自题为《Microsoft Dynamics CRM 本地部署到 Dynamics 365 在线迁移》的45页PDF文档,其中详细说明了迁移步骤(下载链接见文末)。.
我可以访问Dynamics数据库吗?
这个问题的一个可能的解决方案是找到一种方法来访问Dynamics 365数据库,然后去与你的Dynamics CRM内部进行同步。问题是,微软不提供对后端Dynamics数据库的访问。
这非常合理,因为将SaaS服务的后端数据库暴露给外界被认为是不好的做法,会导致相当大的安全漏洞或数据完整性问题。相反,微软提供了一个官方API来执行与D365在线的数据交互。
使用API服务的主要原因是它们不会破坏内部业务规则和约束,确保客户应用不妨碍性能。它们还有助于保持数据的完整性和后端数据库的一致性。相当有益,对吗?
唯一的缺点是,通过API操作数据需要开发流程,这需要大量技能和时间投入。此外,你还必须深入研究海量文档才能找到正确的参数,并正确调用相关接口提供的方法和函数。遗憾的是,这就是事情的运作方式。.
如果能让操作更简单呢?如果你熟悉SQL,那么直接运用SQL技能与D365 API交互,就像操作常规数据库管理系统(DBMS)那样,岂不是再好不过?更理想的是,如果能直接通过Microsoft SQL Server Management Studio让Dynamics 365同步数据库……
好吧,我们有一个好消息要告诉你。
从本地DBMS或任何客户端应用程序连接到D365在线
我们欢迎你来到我们的 D365 Database Sync Solution完全基于Connecting Software的集成平台 Connect Bridge它是定制的,用于将企业内部的数据库同步到D365云端。很神奇,对吗?
如果你想知道它是如何运作的,, Connect Bridge 将ANSI标准SQL语法翻译成适当的API调用。
通过确保数据访问通过API调用实现(尽管您无需为此操心),该方案能保障目标系统的完整性安全。此外,您还能轻松通过API与任何目标系统进行通信。 标准的SELECT、INSERT、UPDATE和DELETE 声明。
你知道这意味着什么吗?你可以 从您的本地DBMS或任何客户端应用程序中,在线连接并插入数据到D365。!
对于从Dynamics CRM on-prem迁移到D365 online的公司来说,这一点尤其方便,因为这些公司拥有连接到Dynamics的内部SQL数据库或应用程序。幸运的是,这些连接可以通过实施Connect Bridge而得以保留。这正是一家意大利连锁超市所做的,你可以在这篇文章中看到 案例研究.
需要特别说明的是,若您希望连接其他Dynamics 365解决方案(如Dynamics 365 Business Central或Finance),同样适用!我们全力支持您……在文章的最后.
现在,是时候看看实际操作效果了。您可以选择免费试用亲自体验,也可以邀请我们的专家为您进行免费演示,或者直接继续阅读!
从任何数据库到Dynamics 365在线
微软著名的Adventure Works DW(数据仓库)数据库(文末可下载)将作为本次演示的基础。我们将展示如何通过Connect Bridge平台,将现有流程与Microsoft Dynamics 365 Online无缝集成。.
在下面的程序中,我们将使用SSMS (SQL服务器管理工作室)来管理你的SQL服务器数据库。
1 - 一旦你设置了AdventureWorks数据库,你将在对象资源管理器窗口中看到数据库的模式,如下图所示。

2 – 接下来我们将创建链接服务器。为此,我们将按照此处的步骤进行操作: 视频教程.
请注意,通过连接器,创建链接服务器与任何目标系统的连接是可能的,因为我们使用的是 Connect Bridge平台. 全球用户可随时使用400多种连接器。在此示例中,我们特别选用Dynamics 365连接器。.

Connecting Software在CRM、ERP和会计领域的连接器选择
3 – 配置完成后,链接服务器将呈现为在SSMS中访问Dynamics后端数据库的状态。如下图所示,其名称为“D365_CRM”。.

通过扩展TreeView中的catalogs节点,我们可以看到Dynamics 365提供的整个模式,就像你访问一个普通的数据库那样。但是,这实际上是一个抽象的、在后台运行的API调用,使其在前端变得如此简单。
通过这个三步流程,您将能够创建任何类型的集成方案,并/或对现有流程进行定制化调整。让我们看看全球用户如何运用此功能。.
企业内部到D365云同步解决方案的适用性
如果你想知道为什么你首先需要这样做,这里有两种常见的情况,可能会让你感到很亲切。
情景1
你工作的公司仍然使用微软Dynamics CRM的内部部署,他们目前正在迁移到微软Dynamics 365在线的过程中。他们有几个从他们的SQL服务器数据库到他们的Microsoft Dynamics CRM内部的集成。
问题是。 你不能直接与微软Dynamics 365在线数据库连接,结果是,你开始怀疑是否。
- 你将不得不使用微软的Dynamics CRM SDK从头开始创建所有的流程。
- 你将不得不从头开始,使用网络API创建所有的流程。
- 你必须学习C#,才能做到这一切。
情景二
你工作的公司有一个定制的ERP系统,以SQL Server数据库为后端。他们决定使用微软Dynamics 365 CRM作为他们自己的客户关系管理系统。
然后,他们希望有能力以自动化的方式将现有的ERP系统的数据填充到CRM中,并保持双方的一致性。
手动完成这一过程实际上是不可能的,因为有数以万计的记录需要在双方身上保持一致,包括账户、联系人和产品。
然而, 公司的IT团队对必要的编程语言和框架没有太多的经验诸如C#、REST服务或CRM的API。他们确实有SQL的经验,但这能派上用场吗?经理想知道他们是否。
- 将不得不聘请一家咨询公司为他们提供这项服务。
- 将取决于上述咨询公司的维护,并随着其业务的扩大而增加新的功能。
幸好,所有这些假设性问题的答案是 不,希望在这一点上,上面的例子的使用是有意义的。
随着 Connect Bridge。 你可以有效地利用你现有的技能,并保留你现有的软件、数据库和流程。
但你不必相信我们的话。请看下面的分步骤例子,或者,更好的是,请你的 免费试用 并亲自试一试。
从Adventure Works数据库表DimCustomer填充Dynamics 365在线账户
准备工作
- 创建以下触发器:
--*****************************************************************************
创建 触发器 [dbo].[植入客户] 启用 [dbo].[访客] 之后 插入
硕士
开始
镶嵌 不计成本 启用
DECLARE @SQL VARCHAR(255)
DECLARE @AccountId VARCHAR(255)
DECLARE @名字 VARCHAR(255)
DECLARE @身份证号码 VARCHAR(255)
DECLARE @中间名 VARCHAR(255)
选择 @名字 = [名字],
@身份证号码 = [身份证号码],
@中间名 = [中间名]
从 已插入;
选择 @SQL = 格式信息('INSERT INTO ACCOUNT (Name) VALUES(''%s'); SELECT SCOPE_IDENTITY(); ',
@名字 + '-' + '-' + @身份证号码)
创建 表 #AccountId(身份证 VARCHAR(255))
插入 #AccountId
执行(@SQL) 淘宝网 D365_CRM
选择 @AccountId = 身份证 从 #AccountId
更新 访客 镶嵌 客户替代键 = @AccountId 哪儿 名 = @名字 和 中间名 = @中间名 和 身份证号码 = @身份证号码
打印 @名字 + ' ' + @中间名 + ' ' + @身份证号码;
结束
--*****************************************************************************
创建 触发器 [dbo].[瘦身后的客户更新(OnDimCustomerUpdate] 启用 [dbo].[访客] 之后 更新
硕士
开始
镶嵌 不计成本 启用
DECLARE @SQL VARCHAR(255)
DECLARE @AccountId VARCHAR(255)
DECLARE @名字 VARCHAR(255)
DECLARE @身份证号码 VARCHAR(255)
DECLARE @中间名 VARCHAR(255)
选择 @AccountId = [CustomerAlternateKey](客户替代键,
@名 = [名],
@身份证号码 = [身份证号码],
@中间名 = [中间名]
从 已插入;
选择 @SQL = 格式信息('UPDATE ACCOUNT SET Name=''%s'' WHERE ACCOUNTID=''%s'', @名字 + '-' + '-' + @身份证号码, @AccountId)
执行(@SQL) 淘宝网 D365_CRM;
打印 @名字 + ' ' + @中间名 + ' ' + @身份证号码;
结束


测试
1 - 在SSMS中打开一个新的查询窗口并粘贴以下内容。
插入 进入 [冒险工场DW].[dbo].[访客] (名, 中间名, 身份证号码, 客户替代键) 价值观 (ABC技术"。, '' ,'GMB', 'CT0001');
插入 进入 [冒险工场DW].[dbo].[访客] (名, 中间名, 身份证号码, 客户替代键) 价值观 ('比利-慈善'号, '' ,'SA'。, 'CT0002');
插入 进入 [冒险工场DW].[dbo].[访客] (名, 中间名, 身份证号码, 客户替代键) 价值观 ('汤姆猫', '' ,'ORG, 'CT0003');
选择 * 从 访客 在哪里? 名 = ABC技术"。;
选择 * 从 访客 在哪里? 名 = '比利-慈善'号;
选择 * 从 访客 在哪里? 名 = '汤姆猫';



在没有触及Dynamics 365的情况下,3个新账户被添加到Dynamics 365。很酷,对吗?
等等,在DimCustomer表中,CustomerAlternateKey字段显示的数字很奇怪。这些并非我们最初插入的值,而是Dynamics 365中生成的账户唯一ID。这怎么可能?
如果你仔细观察触发器OnDimCustomerInsert,你会注意到SELECT SCOPE_IDENTITY();负责返回用于更新表DimCustomer的账户ID。当表DimCustomer中的记录被改变时,这对于在Dynamics 365中执行现有账户的更新至关重要。
为了证明我们的观点,更新在SSMS中执行以下代码创建的记录。
更新 [冒险工场DW].[dbo].[访客] 镶嵌 身份证号码 = 'LTD'。 在哪里? 客户替代键 = 'account(9a1bc5cb-6ad7-e811-a96f-000d3a2cb90b)';
注意:替换字符串 account(9a1bc5cb-6ad7-e811-a96f-000d3a2cb90b) 用你的环境中产生的值。

真好!
总结
这些都是简单的例子,但它们确实证明了这是如何在实践中发挥作用的。这是一个可扩展和强大的解决方案,使你能够 无缝:
- 将以前与你的内部Dynamics连接的所有东西集中起来。
- 迁移到Dynamics的在线版本,并保持现有的集成正常工作。
而且,最不重要的是。
- 无需学习任何新技术或编程语言! 易如反掌.
- 你可以通过修改触发器来加强这一过程。
还有。 如果你马上往下看,想知道还有哪些Dynamics 365的解决方案可以用Connect Bridge轻松连接,这就是那部分内容了!
它们是。
这样的待遇!
如有任何意见或建议,请在下方空白处填写,我们将尽快回复。.
资源链接
Connect Bridge 免费试用
Connect Bridge 了解更多
微软 快速通道
"微软Dynamics CRM企业内部向Dynamics 365在线迁移"文件
冒险工程 数据库
微软Dynamics 365 官方网站
文章最后更新于。2022年3月28日
关于作者

作者 Ana Neto, 技术顾问 于 Connecting Software。
"自 1997 年以来,我一直是一名软件工程师,最近开始喜欢写作和公开演讲。您对本文有任何问题或评论吗?欢迎在下方留言!"


Comments 6
谢谢你的信息!
看起来很有趣--业务规则的执行情况如何? 例如,我们需要从我们的POS机(SQL表中的数据)获取交易到业务中心--那么销售涉及到D365中不存在的客户和/或产品的用例呢?
Author
嗨,保罗。
如果你能从你的POS机的SQL表中获得数据,并且它遵循一个你能理解的结构,那么你可以使用 Connect Bridge 来将所有的东西都放到Business Central中。如果销售涉及的客户和或产品在D365中并不存在,你需要决定怎么做,例如,你可以使用一个通用的客户或产品,或者你可以在飞行中创建新的客户或产品。
我们将通过您指定的电子邮件与您联系,与您探讨这个方案。
Ana Neto
有趣的帖子,我喜欢它
谢谢!
这是否允许我将案例从CRM 2016迁移到云端的Dyn365,并且仍然能够将它们连接到原有的联系人上?联系人查询将使我们的代理回到原有的版本,但案例将在云上更新。
Author
是的,通过Connect Bridge,您可以将案例从CRM 2016内部迁移到云端的Dynamics 365。我们的团队成员将通过电子邮件与您联系,如果您想了解更多细节。