TL;DR: 1. 从2011升级到2016 CRM的最佳方式,最佳实践。 2. 从2011迁移到清洁的2016 CRM的最佳方法。 3. CRM 2016和CRM 365之间的区别(本地版,两者都是)
谢谢您即将提供的答案。
我曾经进行过许多CRM 2011到CRM 201X的迁移,包括CRM 2016和Dynamics365。以下是我对这些问题的建议/想法。
1) CRM Deployment Manager处理的组织迁移工作非常出色。我通常会在不同的服务器上创建一个暂存环境(所以CRM 2013-> CRM 2015-> CRM 2016),制作完整的数据库副本,在下一个服务器上恢复它并使用Deployment Manager导入组织。至于自定义 - 这取决于CRM的年龄,它有多少自定义内容以及它是否从CRM 4.0升级而来。如果最后一个是真的,并且自定义的数量很大 - 在大多数情况下,我会删除所有Javascript和插件,并从头开始编写它们。虽然在成功迁移到CRM 2011之后Rollup 12可能会使所有脚本和插件正常工作,但通常可以使用CRM 2016的一些新功能(不仅仅是业务规则,我个人不喜欢,而主要是计算字段或汇总字段)来实现CRM 4.0中的大多数逻辑,因此没有必要将所有这些内容保留在某些JavaScript或插件中。如果系统起源是CRM 2011,那么我只会审计可以简化的功能,但通常不会重写整个功能,只需进行一些调整。如果脚本包含OrganizationData服务调用,我通常会重写它们以使用webAPI - OrganizationData即将从CRM中删除,因此这是一个好事情。
当然,在将组织导入到目标环境后,我会应用所有修改过的自定义内容(这些内容是在另一个DEV环境中进行测试的)。3) 已经给出了相当好的答案,Dynamics365仅仅是CRM 2016的一个更新版本(这就是为什么它的版本号是8.2而不是9.0),所以从CRM的角度来看,没有太多的变化。升级过程中最大的变化可能是可编辑网格——很容易准备一个可编辑的视图(尽管它有一些缺点,比如不能进行内联记录创建),这可以简化一些场景(或者允许您放弃一些自定义解决方案)。业务流程更易于处理,因为它们有单独的数据库表,其中保存了有关流程状态的所有重要信息(这也引入了新的SDK访问这些流程的方式)。其他事情仅仅是外观上的改变,主要是为了商业人士而不是开发人员。
4) 至于赏金问题 - 所有的应用程序仍然可以使用普通的Organization.svc (通过获取IOrganizationService对象),这是CRM的SOAP终结点。目前没有计划删除此终结点,因此我无法看到将此应用程序重写为使用webAPI的任何优势(当然这是可能的)。XrmServiceContext只是IOrganizationService的包装器,它允许您以更多的“工作单元”方式使用它 - 当然在检索数据时非常有用,但是对于所有其他CRUD操作,我不喜欢它。但无论如何 - 它仍然只是一个包装器,所以唯一重要的是如何获得IOrganizationService。回到CRM 2011,最有可能使用OrganizatoinServiceProxy类来实现这一点,您使用正确的凭据数据进行实例化(就像我在这里解释的那样:https://stackoverflow.com/a/42873662/7708157)。当前建议的方法是使用Microsoft.Xrm.Tooling.Connector程序集(从nuget中获取 - Microsoft.CrmSdk.XrmTooling.CoreAssembly),并使用CrmServiceClient和连接字符串一起使用(请参见:https://msdn.microsoft.com/en-us/library/jj602970.aspx)。这将允许您获取IOrganizationService,您可以将其包装在xrmservicecontext或任何您想要的东西中。建议采用这种方法,因为未来最有可能使用webAPI而不是Organization.svc终结点,因此如果Microsoft决定删除或弃用此服务,则您的应用程序将仍然正常工作。
由于问题非常广泛,答案精确到位,不会深入探讨主题。
虽然你可以进行“原地升级”(现有的CRM服务器+现有的SQL数据库),这本质上几乎就像应用了累积更新一样。或者提供一个新的服务器并使用现有的SQL服务器,但最好且是微软推荐的升级方式是进行迁移升级(新的CRM服务器+新的SQL服务器)。
迁移的步骤(简述):
较长的故事将涉及使用SDK的最新版本升级插件(这将涉及取消注册、升级并重新注册所有插件和步骤),设置身份验证、SPN等。 我建议认真阅读上面链接的文章。
请注意,升级必须是逐步的(例如2011-2013-2015-2016,如果有适用的CUs,则在中间进行)。将数据从2011迁移到干净的2016 CRM的最佳方法。
几个月前,我也像你一样处于同样的位置,因为我正在管理一个项目(本周末交付)。
在研究了一些解决方案后,我得出以下结论:微软推荐的方法很难实现,耗时且完全不降低风险。请注意,在我的情况下,我们从On Premise迁移到Online,这比从On Premise到On Premise更难实现。
在我们的情况下,我们选择了旧数据库与新数据库的映射,并通过我们的集成商配置的ETL作业将所有内容迁移到CRM 2016 Online。我认为这是最好的方法,因为我们对发生的一切都有完全的掌控权,如果有字段丢失(例如,潜在客户的传真未被迁移),您可以轻松地迁移该字段。
如果您选择2011 ==> 2013 ==> 2015 ==> 2016路线,您需要三倍的工作量,因为您需要覆盖每个版本之间的差距(例如,在2011年的潜在客户中有4个电话字段,而在2016年只有3个),并且必须三次提出解决方案而不是一次。
CRM 2016和CRM 365之间的区别(On Premises,两者都是)
CRM没有区别。除非我弄错了,带有服务器端同步的365版本将允许您使用365 Outlook插件,该插件具有比其他版本更多的功能(与2011版相似)。编辑:我搞错了。 Dynamics 365是CRM 2016的新名称(遵循微软的新365品牌,该品牌也适用于Dynamics AX)。您的系统应已更新,并且除了名称更改(以及我尚未测试的全新Outlook附加组件)外,您还将集成Voice of the Customer到系统中,而不是作为解决方案提供。我认为还有一些其他变化。请注意,您需要从管理界面手动升级诸如“现场服务”之类的解决方案。
迁移计划:
由于该问题被提名为悬赏问题,我将分享我在从2011年升级到2016年期间所采取的步骤(虽然我不是官方来源,但可能会有帮助)。
自定义内容升级怎么样:
现在是悬赏问题:
使用xrmservicecontext和organisationservice的工作并没有显著改变。
确保您没有引用CRM 4 DLL,然后只需用它们的2016版本替换所有CRM SDK引用(我建议使用NuGet软件包而不是直接引用程序集)。您的代码应该可以编译而不出错。