Microsoft Dynamics CRM – 快速指南

Microsoft Dynamics CRM – 快速指南


Microsoft Dynamics CRM – 概述

客户关系管理 (CRM) 是一种用于管理公司与当前和未来客户互动的系统。它通常涉及使用技术来组织、自动化和同步销售、营销、客户服务和技术支持。CRM 可以通过组织和自动化培养客户满意度和忠诚度的业务流程来帮助降低成本和提高盈利能力。

微软动态客户关系管理

Microsoft Dynamics CRM 是由 Microsoft 开发的客户关系管理软件包,专注于增强任何组织的客户关系。开箱即用,该产品主要侧重于销售、营销和客户服务部门,尽管 Microsoft 一直将 Dynamics CRM 作为 XRM 平台进行营销,并一直鼓励合作伙伴使用其专有(基于 .NET)的框架对其进行定制。近年来,它也成长为由 CRM 驱动的分析平台。

CRM 解决方案可用于提高组织的销售生产力和营销效率,处理完整的客户支持链,并提供社交洞察、商业智能以及许多其他开箱即用的功能和特性。作为一种产品,Microsoft Dynamics CRM 还为在手机和平​​板电脑上使用 CRM 应用程序提供全面的移动支持。

在编写本教程时,CRM 的最新版本是 CRM 2016。但是,在本教程中,我们将使用 CRM 2015 Online 版本,因为它是最新的稳定版本,并且在许多组织中经常使用。尽管如此,即使您使用任何其他版本的 CRM,本教程中的所有概念仍然适用。

产品供应

Microsoft Dynamics CRM 分为两类 –

在线客户关系管理

CRM Online 是基于云的 Microsoft Dynamics CRM 产品,其中所有后端流程(例如应用程序服务器、设置、部署、数据库、许可等)都在 Microsoft 服务器上进行管理。CRM Online 是一种基于订阅的产品,对于可能不想管理 CRM 实施中涉及的所有技术问题的组织来说,这是首选。您可以在几天内(而不是数周、数月或数年)开始设置系统,并通过浏览器在网络上访问它。

CRM 内部部署

内部部署 CRM 是 Microsoft Dynamics CRM 的一种更加定制化和强大的产品,其中 CRM 应用程序和数据库将部署在您的服务器上。此产品允许您控制所有数据库、自定义、部署、备份、许可以及其他网络和硬件设置。通常,想要定制 CRM 解决方案的组织更喜欢内部部署,因为它提供更好的集成和定制功能。

从功能的角度来看,这两种产品都提供了相似的功能;然而,它们在实施方面有很大不同。下表总结了差异。

CRM Online CRM 内部部署
This is a cloud-based solution provided by Microsoft in which all the servers and databases are managed by Microsoft. 这是 Microsoft 提供的内部部署解决方案,其中服务器和数据库由客户管理。
You can get started with an online offering in a matter of few days. You pay for the users and used space on-the-go. 设置内部部署产品需要技术技能以及足够的时间来设置 CRM 实例并使其运行。
It supports relatively less customizations and extensions. 它支持相对较多的定制和扩展。
CRM Online does not give the ability to perform manual data backup and restore options, since the database is hosted on Microsoft servers. However, Microsoft performs daily backups of the database. 内部部署 CRM 提供了管理数据库的完整能力。
CRM Online has various plans based on the data storage limits such as 5GB, 20 GB, etc. 内部部署 CRM 对存储大小没有任何此类限制,因为数据存在于您自己的服务器上。
CRM Online provides inbuilt capabilities of features such as insights, social listening, analytics, etc. 内部部署 CRM 需要为这些功能支付额外费用。
CRM Online supports automatic updates to future version. CRM 内部部署更新需要由管理员安装。

访问客户关系管理

可以通过以下任何选项访问 Microsoft Dynamics CRM –

  • 浏览器
  • 手机和平板电脑
  • 外表

产品竞争对手

Microsoft Dynamics CRM 无疑是 CRM 领域的顶级产品之一。但是,以下是与 Microsoft Dynamics CRM 竞争的其他产品。

  • 销售网
  • 甲骨文
  • 树液
  • 贤者客户关系管理
  • 糖客户关系管理
  • 网络套件

产品版本

从 2003 年的 1.0 版本开始,Microsoft Dynamics CRM 多年来不断发展。最新版本(截至撰写本文时)是 2015 年。以下是发布版本的时间顺序列表 –

  • 微软客户关系管理 1.0
  • 微软客户关系管理 1.2
  • 微软动态 CRM 3.0
  • 微软动态 CRM 4.0
  • 微软动态 CRM 2011
  • 微软动态 CRM 2013
  • 微软动态 CRM 2015
  • 微软动态 CRM 2016

Microsoft Dynamics CRM – 环境

让我们从设置我们的 CRM 环境开始。我们将使用 CRM 2015 的在线版本,因为在线版本提供一个月的免费试用访问。通过这样做,您无需购买任何许可证即可学习 CRM。

注意– 由于 Microsoft Dynamics CRM 是一个不断发展的产品,当您学习这一点时,您可能会拥有该产品的更新版本。在这种情况下,应用程序的外观可能与您在本教程的屏幕截图中看到的不完全相同。但是,产品的核心概念保持不变。产品的外观和导航可能会发生变化,但是,在大多数情况下,您将能够轻松导航并找到所需的选项。

设置 Microsoft Dynamics CRM 在线帐户

步骤 1 – 导航到以下 URL –

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

如果您以后没有通过此链接看到试用版选项,请尝试在 Google 上搜索“Microsoft Dynamics CRM 免费试用版”。

步骤 2 – 单击免费试用按钮。这将启动一个 3 步注册过程,如下面的屏幕截图所示。在三步注册的第 1 步中,填写姓名、电子邮件和语言等必填详细信息。

Mscrm在线注册步骤2_1

步骤 3 – 单击免费试用按钮。这将启动一个 3 步注册过程,如下面的屏幕截图所示。在三步注册的第 1 步中,填写姓名、电子邮件和语言等必填详细信息。

Mscrm在线注册步骤3

第 4 步– 在 3 步注册的第 3 步中,Microsoft 将验证您指定的手机号码。为此,您可以提供您的手机号码并单击给我发送短信。然后它会向您的手机发送一个 OTP,您可以使用它进一步进行设置。

Mscrm在线注册步骤4

步骤 5 – 您的 Office 365 用户 ID 将被创建。您可以保存此用户 ID 信息以供以后访问。

Mscrm在线注册步骤5

设置帐户后,它现在将打开您的 CRM 仪表板,如下所示。

Mscrm在线注册第6步

再次强调,上面的截图可能会随着未来的版本而改变,但是设置环境将是一个非常简单的过程。

下载CRM SDK

Microsoft Dynamics CRM 的软件开发工具包 (SDK) 包含重要的代码示例,包括服务器端代码、客户端代码、扩展、插件、Web 服务、工作流、安全模型等。基本上,SDK 包含您需要的所有开发资源开始使用 CRM。无论您是计划建立一个新的插件项目还是为 CRM 建立一个 Web 服务项目,SDK 都提供了从简单到高级的基本架构和示例,以帮助您开始工作。我们现在将查看下载和安装 SDK 的步骤。

步骤 1 – 每个版本的 Microsoft Dynamics CRM 都有自己的 SDK 版本。获得正确 SDK 版本的最佳方法是在 Google 上搜索您各自的 CRM 版本。例如,如果您的 CRM 版本是 2015,则尝试搜索“Microsoft Dynamics CRM 2015 SDK”。

步骤 2 – 下载后,运行 exe 设置。单击继续。

第 3 步– 它会要求您选择应提取 SDK 的位置。选择您希望保留参考 SDK 的任何适当位置。

步骤 4 – 打开您提取的文件夹。您可以从这里访问所有 SDK 内容。

结论

在本章中,我们通过创建 CRM Online 帐户来设置环境。然后我们下载了 CRM SDK,它将在本教程的后续章节中使用。请务必记下设置帐户时使用的凭据,因为下次登录时将需要这些凭据。

功能模块

整个 Microsoft Dynamics CRM 是围绕以下功能模块设计的。

  • 销售量
  • 营销
  • 服务管理

这些功能模块通常称为工作区

了解CRM功能模块

整个 CRM 应用程序在功能上针对不同类型的用户和团队进行划分。因此,如果组织使用 CRM 来管理其流程,则销售团队的用户将使用销售模块下的功能,而营销团队的用户将使用营销模块下的功能。

所有这三个功能模块共同推动获得新客户(营销)、向他们销售服务(销售)和维护现有客户(服务管理)的整个生命周期。

Mscrm 销售 营销 客户服务

为了更好地理解这一流程,请考虑一家向客户销售信用卡的银行。向客户出售信用卡的典型生命周期如下。在此生命周期的每个步骤中,您将看到销售、营销和服务模块如何发挥其作用。

Sales & Marketing – 银行呼叫中心办公室主管接收潜在客户的数据;通常称为 CRM 中的潜在客户。这些潜在客户通过营销活动、销售驱动、推荐等在 CRM 系统中捕获。

销售– 呼叫中心主管通过电话/电子邮件/等方式与这些潜在客户沟通。如果客户对信用卡产品感兴趣,Lead 记录将转换为 Opportunity 记录(赢得 Lead)。

服务– 一旦客户成为系统的一部分,公司将协助他/她进行付款、计费、退款等。每当客户有任何疑问或疑虑时,他们都会致电呼叫中心并提出事故。行政人员将跟进解决案件,旨在为客户提供优质服务。这些任务属于 CRM 服务管理。

导航 CRM 工作区

步骤 1 – 打开 CRM 主页。

步骤 2 – 默认情况下,您将看到已选择的销售工作区。

Mscrm 工作区

步骤 3 – 要更改工作区,请单击显示工作区选项。您将看到用于选择销售、服务和营销的选项。

Mscrm 工作区展示

步骤 4 – 单击销售。这将显示属于销售的所有实体,例如客户、联系人、潜在客户、机会、竞争对手等。 这些实体中的每一个都按其业务流程进行分类,例如我的工作、客户、销售、抵押品等。

Mscrm 销售

步骤 5 – 同样,如果您单击营销工作区,您将看到与营销业务功能相关的所有实体。

客户关系营销

销售模块

CRM 的销售模块旨在推动新客户的整个销售生命周期。销售模块由以下子模块组成 –

Leads – 代表将来可能成为公司潜在客户的个人或组织。这是在系统中吸引潜在客户的第一步。

机会– 代表对客户的潜在销售。一旦潜在客户对产品表现出兴趣,它就会转换为机会。机会要么赢,要么输。

帐户– 代表与组织有关系的公司。一旦机会获胜,它就会转换为客户或联系人。

联系人– 代表一个人或与该组织有关系的任何个人。这些联系人大多是组织的客户(例如银行的所有信用卡客户)。一旦机会获胜,它就会转换为客户或联系人。

竞争对手– 管理组织的所有市场竞争对手。

产品– 管理组织向其客户提供的所有产品(例如,所有信用卡计划)。

报价– 以特定价格发送给潜在客户的产品或服务的正式报价(例如,发送给客户的特定信用卡计划的年度定价)。

订单– 客户接受的报价变成订单(例如,在组织为您提供的所有计划中,您可以订阅 6 个月)。

发票– 计费订单生成发票。

营销模块

CRM 的营销模块旨在推动组织针对现有和潜在客户的整个营销过程。营销模块由以下子模块组成 –

营销列表– 提供一种方法来对您的联系人、客户和潜在客户进行分组,并通过发送促销电子邮件、活动详细信息、新闻通讯和与目标客户相关的其他更新与他们互动。您可以定义创建营销列表的条件(例如,年龄在 25 到 35 岁之间的联系人)。

活动– 活动旨在衡量有效性并实现特定结果,例如推出新产品或增加市场份额,可能包括各种沟通渠道,例如电子邮件、报纸广告、YouTube 广告等。

快速活动– 快速活动类似于活动,但它只能与一种类型的活动相关。

上述所有营销模块都与销售模块密切配合。

服务管理模块

CRM 的服务管理模块旨在集中、管理和跟踪组织的客户服务操作,例如支持基于事件的服务、支持使用服务调度的客户等。

服务管理模块涵盖以下子模块 –

  • 案例(事件) – 支持要通过事件/案例跟踪的任何客户请求、问题或投诉。案例遵循问题解决过程的各个阶段,然后最终得到解决并关闭。

  • 知识库– 维护客户经常询问的所有常见问题和答案的主存储库。

  • 合同– 合同与案例一起使用,表明客户拥有的所有活动合同。

  • 资源/资源组– 代表用于提供服务的人员、工具、房间或设备。这些资源可用于解决特定的客户问题。

  • 服务– 代表组织向客户提供的所有服务。

  • 服务日历– 用于安排在组织中工作的用户的工作时间和时间表。

活动管理

上面解释的所有模块都使用 CRM 的活动管理模块。活动代表与客户的任何类型的交互,例如电话、电子邮件、信件等。这些活动可以与前面解释的任何实体相关,例如客户、联系人、潜在客户、案例等。默认情况下,CRM提供以下开箱即用的活动类型 –

  • 电话
  • 电子邮件
  • 任务
  • 约定
  • 定期约会
  • 信件
  • 传真
  • 活动响应
  • 竞选活动
  • 服务活动
  • 自定义活动

结论

在本章中,我们了解了 CRM 的三大模块——销售、营销和服务管理。我们了解 CRM 中的工作区域是如何组织的,以及 CRM 组织的整个生命周期是如何运作的。我们还研究了 CRM 的活动管理模块,它允许创建电话、电子邮件、传真和其他类型的客户交互活动。

实体和记录

现在我们已经对所有 CRM 模块进行了功能概述,让我们学习和了解 CRM 中的实体和表单。

什么是实体?

实体用于建模和管理 CRM 中的业务数据。联系人、案例、客户、线索、机会、活动等都是保存数据记录的实体。从概念上讲,CRM 实体相当于数据库表。例如,联系人实体将保存联系人记录,案例实体将保存案例记录,依此类推。

您可以同时拥有:开箱即用的实体(CRM 默认提供)和自定义实体(您可以通过自定义创建)。例如,假设您正在维护客户已阅读书籍的数据。为此,您将使用开箱即用的 Contacts 实体存储客户数据,但您将在哪里存储书籍数据?您没有任何可以存储书籍数据的实体。在这种情况下,您将创建一个名为 Books 的新自定义实体并将其与现有的 Contacts 实体相关联。

在本教程中,让我们举一个在 CRM 中存储雇主和雇员的示例。考虑到这个例子,开箱即用的 CRM 提供了联系人实体,您可以在其中理想地存储所有员工。它还提供了一个Account实体,您可以在其中存储所有雇主。但是为了学习实体,我们将创建一个名为Employer的新自定义实体(而不是使用现有的 Account 实体)。

创建新实体

步骤 1 – 单击顶部功能区按钮,然后单击设置选项。单击定义部分中的自定义选项(请参阅以下屏幕截图)。

Mscrm 创建实体步骤 1

步骤 2 – 现在单击自定义系统选项。

Mscrm 创建实体步骤 2

这将打开默认解决方案窗口。您将在下一章中了解有关 CRM 解决方案的更多信息,但现在您将使用默认的 CRM 解决方案。

Mscrm 创建实体步骤 2_2

步骤 3 – 从左侧面板展开实体选项。

Mscrm 创建实体步骤 3

步骤 4 – 现在单击新建 → 实体。

Mscrm 创建实体步骤 4

步骤 5 – 在实体表单中,输入显示名称为雇主,并输入 PluralName 作为雇主。在“显示此实体的区域”部分中,选中销售、服务和营销。选中这些选项将在 CRM 的 Sales、Service 和 Marketing 选项卡中显示新创建的实体。

Mscrm 创建实体步骤 5

步骤 6 – 单击“保存并关闭”图标。这将在幕后在 CRM 数据库中创建一个新实体。

Mscrm 创建实体步骤 6

步骤 7 – 在默认解决方案父窗口中,您将看到新创建的雇主实体。

Mscrm 创建实体步骤 7

步骤 8 – 单击顶部功能区栏中的发布所有自定义选项。这将发布(又名提交)我们到目前为止所做的所有更改。您可以通过单击保存并关闭来关闭此窗口。

Mscrm 创建实体步骤 8

创建记录

CRM 就是管理系统中有价值的数据。在本节中,我们将学习如何在 CRM 中创建、打开、读取和删除记录。我们将继续我们在上一章中创建的雇主实体。

步骤 1 – 通过显示工作区 → 销售 → 扩展 → 雇主导航到雇主实体记录网格。

Mscrm 访问实体步骤 3

步骤 2 – 单击新建图标。

Mscrm 创建记录步骤 1

这将打开默认的新雇主表格。您可以看到在这个默认表单中只有一个可编辑的字段名称。在名称字段中输入雇主 1。单击保存并关闭。

Mscrm 创建记录第 2 步

步骤 3 – 在Active Employers视图中,您可以看到新创建的雇主记录。

Mscrm 创建记录步骤 3

访问记录

要访问 CRM 中已创建的记录,请转到该实体页面。在我们的例子中,导航到显示工作区 → 销售 → 扩展 → 雇主。您将看到网格中存在的记录列表。单击任何雇主记录以访问它。

Mscrm 创建记录步骤 3

更新记录

打开记录后,您可以编辑表单上的任何详细信息。默认情况下,CRM 2015 带有自动保存选项,可在更改后 30 秒保存对表单所做的任何更改。或者,您可以单击 Ctrl+S。

Mscrm 编辑记录

如果您想禁用自动保存功能,请转至设置 → 管理 → 系统设置 → 为所有表单启用自动保存并选择否。

Mscrm 禁用自动保存

删除记录

步骤 1 – 选择要删除的一个或多个记录,然后单击删除按钮。

Mscrm 删除记录.jpg

步骤 2 – 单击删除确认删除记录

Mscrm 删除记录确认

结论

如上例所示,默认雇主表单只有一个字段。但是,在现实生活场景中,表单上会有许多自定义字段。例如,如果您查看示例联系人记录(即开箱即用的 CRM 实体),它将有许多字段来存储联系人信息,例如全名、电子邮件、电话、地址、案例等。

Mscrm 创建记录步骤 4

在接下来的章节中,您将学习如何编辑此默认表单并在其上添加不同类型的字段。

Microsoft Dynamics CRM – 字段

在您了解如何向 CRM 表单添加自定义字段之前,让我们先了解一下 CRM 支持哪些类型的数据字段。

字段类型

开箱即用,CRM 提供了 11 种类型的数据字段,可以放置在表单上 –

  • 单行文本
  • 选项集(下拉菜单)
  • 两个选项(单选按钮)
  • 图像
  • 完整的号码
  • 浮点数
  • 十进制数
  • 货币
  • 多行文本
  • 日期和时间
  • 抬头

下表列出了每一项并附有简要说明。

Sr.No 字段类型和描述
1

Single Line of Text

此字段最多可存储 4000 个字符的文本。您还可以将格式指定为以下格式之一:电子邮件、文本、文本区域、URL、股票代码和电话。您可以为每个设置最大长度和 IME 模式。

2

Option Set (Dropdown)

该字段存储一组选项,每个选项都有一个数值和标签。换句话说,它是 CRM 中的一个下拉字段。您还可以定义可跨多种表单使用的全局选项集。

3

Two Options (Radio Button)

此字段提供两个选项供用户选择(0 或 1)。换句话说,它是一个单选按钮字段。

4

Image

当实体具有图像字段时,可以将其配置为在应用程序中显示记录的图像。

5

Whole Number

此字段存储介于 -2,147,483,648 和 2,147,483,647 之间的整数值。它支持指定格式为无、持续时间、时区和语言。您也可以设置最小值和最大值。

6

Floating Point Number

此字段存储精度介于 0.00 和 1,000,000,000.00 之间的浮点数,最多 5 个小数点。您也可以设置最小值和最大值。

7

Decimal Number

此字段最多存储 10 个小数点,其值范围为 -100,000,000,000.00 和 100,000,000,000.00。

8

Currency

此字段用于存储 922,337,203,685,477.0000 到 922,337,203,685,477.0000 范围内的任何货币值。您还可以将精度指定为十进制定价、货币精度或 0 到 4 之间的任何值。

9

Multiple Lines of Text

这是一个滚动文本框。您可以为此字段设置最大字符数。

10

Date and Time

此字段用于在 CRM 中存储与日期相关的数据,支持两种格式:仅日期和日期和时间。您还可以将行为指定为用户本地、仅日期和时区无关。

11

Lookup

您可以使用已创建但尚未与其他查找字段一起使用的实体关系创建查找字段。如果您在实体表单中创建查找字段,则会自动生成关系。查找字段创建为关系字段。

Microsoft Dynamics CRM – 表单

在最后两章中,您学习了创建新实体、创建新记录和 CRM 中可用的字段类型。在本章中,您将学习在 CRM 表单上添加新字段。

在上一章研究的 11 种类型的数据字段中,您将在雇主上使用三种类型的字段 – 选项集(下拉菜单)、多行文本和日期时间。Option Set 字段将用于存储雇主类型,Multiple Lines of Text 将用于存储雇主的简要描述,DateTime 字段将用于存储公司成立的日期。注意:您的表单上已经有一个名称字段,它是单行文本类型。

在表单上添加字段

步骤 1 – 单击顶部功能区按钮,然后单击设置选项。单击定义部分中的自定义选项(请参阅下面的屏幕截图)。

Mscrm 创建实体步骤 1

步骤 2 – 现在单击自定义系统选项。

Mscrm 创建实体步骤 2

这将打开 DefaultSolution 窗口。您将在下一章中了解有关 CRM 解决方案的更多信息,但现在您将使用默认的 CRM 解决方案。

Mscrm 创建实体步骤 2_2

步骤 3 – 从左侧面板展开实体选项。

Mscrm 创建实体步骤 3

步骤 4 – 从展开的实体中,选择雇主。这将在右侧窗口中打开实体的详细信息。从左侧面板展开雇主选项,您将能够看到表单、视图、图表、字段和其他几个选项。

Mscrm 添加新字段步骤 4

步骤 5 – 单击字段。它将打开一个网格,显示创建此实体时默认出现的所有字段。

Mscrm 添加新字段步骤 5

步骤 6 – 单击新建按钮。在打开的新窗口中,输入以下详细信息 –

显示名称– 雇主类型

名称– 此字段将根据您选择的显示名称自动填充。但是,如果您想更改它,则可以这样做。

数据类型– 选项集。一旦您选择数据类型作为选项集,它就会显示您的选项面板。单击加号 (+) 图标创建一个新的选项集项目,默认标签为项目,默认值为 100,000,000。您可以更改此项的标签以添加四个代表雇主类型的选项:私人、政府、跨国和公共。

Mscrm 添加新字段步骤 6

步骤 7 – 单击顶部功能区中的保存并关闭。您已成功创建雇主类型字段。

第 8 步– 与您刚刚添加雇主类型字段的操作类似,添加其他三个字段,如下面的屏幕截图所示和所示 –

员工人数– 这将是一个整数字段。

成立于– 这将是一个日期时间字段。

雇主描述– 这将是一个多行文本字段。

Mscrm 添加新字段整数

Mscrm 添加新字段日期时间

Mscrm 添加新的多行文本

第 9 步– 现在在雇主表格上添加这些新字段。为此,请单击 Employer 实体下左侧导航中的 Forms。这将显示两个名称为 Information 的表单。默认情况下,CRM 创建两个表单 – Main 和 Mobile-Express。单击主窗体。

Mscrm 添加新字段步骤 9

步骤 10 – 您可以在右侧的 Field Explorer 面板中看到新添加的字段。

Mscrm 添加新字段步骤 10

步骤 11 – 将这些字段拖放到“常规”选项卡中。

Mscrm 添加新字段步骤 11

步骤 12 – 单击保存,然后单击发布。

步骤 13 – 您现在可以使用更新字段创建雇主记录。导航到 CRM 主页 → 销售 → 雇主 → 新建。这次将打开的新表单将包含您在本章中添加的所有新字段。您可以填写一些详细信息,然后单击保存并关闭。

Mscrm 添加新字段步骤 13

结论

在本章中,我们学习了使用 CRM 表单以及如何通过在其中放置各种类型的字段来自定义它们。我们还学会了在任何表单上添加任意数量的字段,并根据业务需求使用各种选项卡和部分来安排它们。

Microsoft Dynamics CRM – 搜索

Microsoft Dynamics CRM 是一个庞大的产品,多年来取得了显着的发展。该产品带有许多内置在系统中的开箱即用功能。您无需编写任何代码即可使用这些功能。重要的开箱即用功能之一是 CRM 的搜索功能,因为它支持高级查询和过滤功能。

快速搜索

默认情况下,CRM 中每个实体的网格视图都支持使用右上角的搜索栏的快速搜索功能。以下是对 Contact 实体进行快速搜索的屏幕截图。

Mscrm 快速搜索栏

您可以尝试输入像“Robert”这样的搜索字符串,它会返回所有匹配的记录。

您可以使用 &ast(星号)作为搜索关键字的前缀来执行通配符搜索。

注意– 使用 Microsoft Dynamics CRM 的 Web 客户端版本时,无论选择何种视图,快速搜索始终搜索所有活动记录。

您可以自定义快速搜索(如自定义任何其他视图)来修改过滤条件、配置排序、添加视图列、添加查找列和更改其他属性。

高级搜索

高级搜索允许您搜索 CRM 中任何实体的记录。它是 CRM 开箱即用的最强大和最有用的功能之一。无论您在哪个屏幕上,高级搜索图标都会出现在 Microsoft Dynamics CRM 的顶部功能区栏上。

Mscrm 高级搜索栏

单击高级查找图标以打开高级查找窗口。此窗口将允许您选择要为其搜索记录的实体、应用过滤和分组标准,并将您的高级查找视图保存为个人视图。

让我们举个例子。假设您要搜索名字中包含 Robert 且已离婚的所有联系人。为此 –

步骤 1 – 从查找下拉列表中选择联系人。此下拉列表将包含系统中存在的所有实体。

步骤 2 – 输入搜索条件,如下面的屏幕截图所示。您可以根据需要添加任意数量的搜索查询参数。您甚至可以使用组参数对此类标准进行分组。例如,如果您想搜索名字为 Robert 或 Mark 的所有联系人,您可以添加两个搜索条件并使用 GroupOR 将它们分组。

Mscrm 高级查找查询结果组

步骤 3 – 单击结果按钮。它将在新选项卡中显示匹配的记录。

Mscrm 高级查找查询结果

步骤 4 – 您还可以通过单击编辑列来编辑您希望在搜索结果中看到的列。例如,我们当前的网格只包含两列 – 全名和商务电话。但是,如果您希望将电子邮件 ID 的附加列添加到此网格,您可以使用此选项。

保存自定义视图

在此阶段,如果您想保存此搜索条件以及过滤器和编辑过的列,您可以通过单击保存按钮来实现。保存后,您可以在该实体页面上使用此保存的视图。

Mscrm 保存自定义视图

例如,考虑到作为客户主管,您为两种类型的客户提供服务:普通客户和高级客户。因此,您可以使用这些各自的类别创建高级过滤器,并将它们保存为分配给我的普通联系人和分配给我的高级联系人。然后,您可以直接从联系人实体页面快速访问这些视图,而无需在每次使用系统时执行快速搜索或高级查找搜索。

Microsoft Dynamics CRM – 网络资源

CRM 中的 Web 资源是存储在 CRM 数据库中的虚拟 Web 文件,用于在 CRM 中实现网页功能。这些文件可以是 HTML、JScript、Silverlight 或任何其他受支持的类型。

CRM 作为一种产品,具有广泛的特性和功能。但是,大多数情况下,您必须扩展这些现有功能以满足您的自定义要求。扩展这些功能通常有两种方式 –

  • 在客户端扩展– 使用 Web 资源和表单脚本。

  • 在服务器端扩展– 插件、工作流和 Web 服务(我们将在接下来的章节中学习这部分)。

网络资源的使用

如上所述,在客户端扩展 CRM 是 Web 资源出现的地方。要清楚地理解这一点,请考虑以下用例 –

  • 您有一个包含某些字段的 CRM 表单。CRM 为基本验证(例如必填字段、字段长度等)提供开箱即用的功能。但是,如果您希望进行更复杂的验证(例如验证输入的电话号码格式是否正确),该怎么办?验证输入的地址是否确实存在,或者输入的 SSN 是否正确?

  • CRM 提供开箱即用的 UI 自定义,例如在表单上创建部分和选项卡、重新排列字段等。但是,如果客户想要构建一个自定义页面来显示来自其他客户的所有信息,该怎么办? ERP系统?

  • CRM 带有一个标准的功能区栏,其中包含所有按钮和选项。如果您想添加自己的功能区按钮怎么办?

  • 考虑到您已经有一个 ERP 系统。如果您想从这个 ERP 系统打开一些 CRM 屏幕怎么办?

  • 您始终可以在服务器端插件代码中调用任何外部 Web 服务。但是,如果您仍处于客户端时想要调用任何外部 Web 服务,该怎么办?

所有这些“假设”的答案是 Web 资源。每个 Web 资源都可以通过其唯一的 URL 访问。您可以上传 Web 资源文件或基于代码的资源(例如 HTML、Jscript 等),您甚至可以直接在 CRM 中对其进行编辑。由于 Web 资源存储在 CRM 中,因此它们可以与任何 CRM 自定义一起轻松地从一个环境迁移到另一个环境。

网络资源的类型

Type of Web Resource CRM 中的示例应用程序
WebPage (HTML) 您可能想要创建任何自定义 HTML 页面,例如地图、自定义应用程序页面等,并将其放置在您的 CRM 表单中。
Style Sheet (CSS) 将与 HTML 文件一起使用的任何 CSS 文件。
Script (JScript) 任何客户端逻辑,如验证、操作字段值等。
Data (XML) 可用于存储任何静态设置或配置数据。
Image (PNG,JPG,GIF, ICO) 应用程序中在功能区按钮、图标、表单等上使用的任何图像。
Silverlight (XAP) 嵌入在 CRM 中的任何自定义 Silverlight 应用程序。
StyleSheet (XSL) 用于转换 XML 数据。

在所有这些类型的 Web 资源中,我们将在后续章节中研究最重要的 Web 资源类型 – HTML Web 资源和 JScript Web 资源。

访问任何实体的 Web 资源

存储在数据库中的所有 Web 资源都可以在 CRM 中访问。以下是涉及的步骤 –

步骤 1 – 转到设置 → 自定义 → 自定义系统。

步骤 2 – 从左侧导航中,选择Web Resources目前,您将无法看到任何 Web 资源,因为我们尚未创建任何内容。

Mscrm 访问 Web 资源步骤 1

我们将在接下来的章节中研究如何创建 Web 资源。

JScript 网络资源

JScript Web 资源可能是您将与 Microsoft Dynamics CRM 一起使用的最重要的 Web 资源类型。

JavaScript 在 CRM 中的应用

表单事件编程

表单事件编程用于处理客户端行为,例如用户打开表单、更改某些数据、在选项卡间移动等时发生的情况。要实现此类客户端交互,您将编写 JavaScript 代码并将其添加为CRM 中的 JScript Web 资源。但是,您将编写的 JavaScript 代码必须使用 Dynamic CRM 的 Xrm.Page 模型,而不是标准的 JavaScript DOM。使用 Xrm.Page 模型是 Microsoft 的编码方式,它确保您使用此模型编写的任何代码都将与任何未来版本的 CRM 兼容。

网络资源

除了用于表单事件编程之外,JavaScript 还用于 CRM 的其他应用程序,例如 –

  • 使用唯一的 URL 打开表单、视图和对话框。

  • 使用 OData 和 SOAP 端点与 Web 服务交互。

  • 在其他 Web 资源(例如 HTML Web 资源)中引用 JavaScript 代码。

在这种情况下,您将编写 JavaScript 代码(使用 Xrm.Page 模型)并将其添加为 CRM 中的 JScript Web 资源,然后可以使用唯一的 URI 在任何地方引用它。

功能区自定义

最后,JavaScript 的另一个常见用途之一是处理功能区自定义,例如 –

  • 根据某些逻辑显示/隐藏功能区按钮
  • 根据某些逻辑启用/禁用功能区按钮
  • 处理单击某个功能区按钮时发生的情况

要处理此类情况,您将编写 JavaScript 逻辑(使用 Xrm.Page 模型),然后将其添加为 JScript Web 资源。然后可以在功能区按钮的 XML 中引用此 Web 资源,我们可以指定在哪个 JScript 文件中调用哪个方法来检查功能区按钮是否应该显示/隐藏或启用/禁用或处理单击事件。

Xrm.Page 对象模型

以下是 Xrm.Page 对象的层次结构,显示了可用的命名空间、对象及其集合。您将在编写 JScript 代码时使用这些属性。

XRM 页面对象模型

命名空间

Sr.No 对象和描述
1

Context

提供方法来检索特定于上下文的信息,例如组织详细信息、登录用户详细信息或在查询字符串中传递给表单的参数。

2

Data

提供对实体数据和方法的访问,以管理表单以及业务流程控制中的数据。

3

UI

除了表单的几个子组件的集合之外,还包含用于检索有关用户界面的信息的方法。

对象

Sr.No 对象和描述
1

Entity

提供方法 –

  • 检索记录信息
  • 保存方法
  • 集合属性
2

Process

检索业务流程属性的方法。

3

Navigation

使用项目集合提供对导航项目的访问。

4

FormSelector

使用 Items 集合来访问用户可用的表单。还使用导航方法来关闭和打开表单。

5

Stages

每个进程都有一个阶段集合,可以使用进程的 getStages 方法访问这些阶段。

6

Steps

每个阶段都包含可以使用阶段的 getSteps 方法访问的各种步骤。

收藏

Sr.No 收藏和描述
1

Attributes

提供对表单上可用实体属性的访问。

2

Controls

ui.controls – 提供对表单上每个控件的访问。

attribute.controls – 提供对属性内所有控件的访问。

section.controls – 提供对部分内所有控件的访问。

3

Items

提供对表单上所有导航项的访问。

4

Tabs

提供对表单上所有选项卡的访问。

5

Sections

提供对表单上所有部分的访问。

表单编程中支持的事件

使用 Xrm.Page 模型的表单编程允许您处理以下表单事件 –

  • 负载
  • 保存
  • onChange
  • 选项卡状态更改
  • 就绪状态完成
  • 预搜索
  • 业务流程控制事件

表单编程示例

在此示例中,我们将根据用户选择的 PreferredMethodofCommunication 对 Contact 表单进行一些验证。因此,如果用户选择他/她的首选方法作为电子邮件,则电子邮件字段应该成为必填字段,对于电话和传真的其他字段也是如此。

步骤 1 – 创建一个名为contacts.js的 JavaScript 文件并复制以下代码。

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'); 
}

步骤 2 – 通过导航到设置 → 自定义 → 自定义系统 → 联系人实体 → 表单 → 主表单,打开联系人实体表单。

步骤 3 – 单击表单属性。

表单编程表单属性

步骤 4 – 从“表单属性”窗口中,单击“添加”。

表单编程添加表单库

步骤 5 – 在下一个查找 Web 资源记录窗口中,单击新建,因为我们正在创建一个新的 Web 资源。

表单编程 添加表单库 New

步骤 6 – 在新建 Web 资源窗口中,输入以下详细信息 –

名称– new_contacts.js

显示名称– contacts.js

类型– JScript

上传文件– 上传您从本地机器创建的 JavaScript 文件。

表单编程 Web 资源 新

步骤 7 – 单击保存,然后单击发布。关闭窗口后,您将返回查找 Web 资源记录窗口。

第 8 步– 在这里,您现在可以看到 new_contacts.js 网络资源。选择它并单击添加。您现在已经成功添加了一个新的 Web 资源并在表单上注册了它。

表单编程 Web 资源添加

步骤 9 – 现在我们将在首选通信方法字段的更改上添加一个事件处理程序。此事件处理程序将调用我们刚刚编写的 JavaScript 函数。从事件处理程序部分选择以下选项。

控制– 首选的沟通方式

事件– OnChange

然后,单击添加按钮,如下面的屏幕截图所示。

表单编程增加了新的表单库

步骤 10 – 在处理程序属性的下一个窗口中,我们将指定发生更改事件时要调用的方法。

选择库作为 new_contacts.js 和函数作为 validatePreferredMethodOfCommunication。单击确定。

表单编程添加处理程序

步骤 11 – 您现在将能够看到表单库(Web 资源)和在其上注册的事件。单击确定。

表单编程添加了库处理程序

步骤 12 – 单击保存,然后单击发布。

表单编程发布自定义

步骤 13 – 现在打开任何联系表格并将首选通信方式设置为电话。这将使移动电话字段成为必填字段。如果您现在尝试在不输入任何手机号码的情况下保存此联系人,则会出现错误提示“您必须为手机提供值”。

表单编程验证

结论

在本章中,我们从了解 JavaScript 在 CRM 中的三个重要应用开始。后来,我们探索了 Xrm.Page 模型,并用它来学习表单编程以及一个例子。

HTML 网络资源

在本章中,我们将了解 Microsoft Dynamics CRM 中的各种 Web 资源。

HTML Web 资源的应用

CRM 中的 HTML Web 资源可以包含可以在浏览器上呈现的任何 HTML 内容。考虑以下您想使用 HTML Web 资源的场景 –

  • 您有一个要在 CRM 屏幕内显示的静态 HTML 页面。

  • 您有一个自定义 HTML 页面,它需要一些输入参数并根据这些输入参数进行呈现。例如,假设您正在从外部 API 或 Web 服务获取信息,并且您希望在 CRM 中显示这些信息。

  • 您希望以与标准 CRM UI 不同的外观和感觉来显示某些信息。

您有一个自定义 ASPX 页面(在 CRM 应用程序之外),它根据输入参数进行呈现。由于 CRM 不允许您拥有 ASPX Web 资源,因此您可以创建一个 HTML Web 资源并从该 HTML 页面调用外部 ASPX 页面。

HTML Web 资源示例

我们将创建一个非常简单的 HTML Web 资源,它将显示自定义文本“欢迎使用 TutorialsPoint”。请注意,这是一个非常简单的 HTML Web 资源示例。实际上,HTML Web 资源会比这更复杂。

步骤 1 – 创建一个名为sampleHTMLWebResource.html的 HTML 文件并复制以下代码。

<!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> 

第 2 步– 首先,我们将创建一个新的 Web 资源,然后在联系表单中引用它。打开 DefaultSolution 并从左侧面板导航到 WebResources 选项卡。单击新建。

HTML Web 资源步骤 2

步骤 3 – 它将打开一个新的 Web 资源窗口。输入以下屏幕截图所示的详细信息,并浏览我们在步骤 1 中创建的 HTML 文件。单击保存并发布。关闭窗口。

HTML Web 资源步骤 3

第 4 步– 您将看到新的 Web 资源添加到 Web 资源网格中。

HTML Web 资源步骤 4

第 5 步– 现在通过设置→自定义→自定义系统→联系人→主表单打开联系表单。选择“联系信息”部分,然后从顶部功能区栏切换到“插入”选项卡。单击 Web 资源。

HTML Web 资源第 5 步

步骤 6 – 它将打开一个添加 Web 资源窗口。单击此窗口中的 Web 资源查找,这将打开 Web 资源查找记录窗口。搜索您刚刚创建的 Web 资源 (new_sampleHTMLWebResource),从网格中选择它并单击添加。

HTML Web 资源第 6 步

步骤 7 – 返回添加 Web 资源,输入名称和标签,如下面的屏幕截图所示,然后单击确定。关闭窗口。

HTML Web 资源第 7 步

您将看到添加在“地址”字段下方的 HTML Web 资源。

HTML Web 资源第 8 步

步骤 8 – 要对此进行测试,请打开任何联系人记录,您将看到其中显示的 HTML Web 资源内容。

HTML Web 资源第 9 步

HTML Web 资源的限制

  • 不支持在 HTML Web 资源中使用服务器端代码的方式。

  • HTML Web 资源只能接受有限数量的参数。要在数据参数中传递多个值,您必须对参数进行编码,包括另一端的解码逻辑。

工作流程

CRM 中的工作流允许您在 CRM 中自动执行简单和复杂的业务流程。您可以使用 CRM 开箱即用的功能创建工作流,也可以使用 .NET 代码编写自定义工作流以实现复杂的工作流。工作流进程在后台或实时运行,并且可以选择需要用户输入。

工作流可以根据特定条件触发,甚至可以由用户手动启动。在内部,CRM 工作流是使用 Windows Workflow Foundation 实现的。在本章中,我们将学习配置工作流。

配置工作流有以下主要部分(按顺序) –

  • 配置工作流将在其上运行的实体
  • 配置工作流是同步运行还是异步运行
  • 配置工作流将在其上运行的消息(事件)
  • 配置工作流将运行的范围
  • 配置工作流的阶段和步骤(操作)

同步/异步工作流

创建工作流时,您将看到在后台运行此工作流(推荐)选项,该选项决定了工作流是实时(同步)还是在后台(异步)运行。

通常,推荐的方法是在后台运行工作流,因为它们会在可用时使用系统资源。但是,您始终可以从实时工作流切换回后台工作流,反之亦然。

工作流消息

工作流可以在特定事件上注册如下 –

  • 创建记录时
  • 当记录状态改变时
  • 分配记录时
  • 当记录字段值更改时
  • 删除记录时

工作流范围

工作流允许您设置工作流运行的范围。以下是支持的工作流程范围 –

User 工作流将仅在与工作流用户相同的用户拥有的记录上运行。
Business Unit 工作流将在与工作流用户相同的业务单位用户拥有的记录上运行。
Parent Child Business Units 工作流将在与工作流用户以及任何子业务单位相同的业务单位用户拥有的记录上运行。
Organization 工作流将在 CRM 中任何用户拥有的记录上运行。

工作流程步骤

CRM 中的工作流是工作流将遵循的一系列步骤的组合。您甚至可以将这些步骤划分为逻辑阶段。CRM 工作流程支持以下步骤 –

Conditional Steps
Check Condition 指定逻辑“if (condition) – then”语句。
Conditional Branch 指定逻辑“else – if – then”语句。这只能与检查条件一起使用。
Default Action 指定逻辑“else”语句。这只能与检查条件一起使用。
Wait Steps
Wait Condition 等待直到满足特定条件。不适用于实时工作流。
Parallel Wait Branch 使用一组附加步骤指定替代等待条件,一旦满足初始条件就可以执行这些步骤。
Action Steps
Create Record 使用指定的默认值创建指定实体的记录。
Update Record 使用指定值或动态值更新所选记录。
Assign Record 将所选记录分配给用户或团队。
Send Email 发送电子邮件。
Perform Action 指定自定义工作流步骤(和操作)。这些自定义步骤必须由 CRM 开发人员开发。
Change Status 更改所选记录的状态。
Stop Workflow 停止当前工作流

工作流示例

在此示例中,我们将创建一个在后台运行的简单工作流,以将任何新创建的联系人记录分配给特定用户,然后向客户发送欢迎电子邮件。

步骤 1 – 转到设置 → 进程。

Mscrm 创建工作流步骤 1

步骤 2 – 单击新建。

步骤 3 – 在 CreateProcess 窗口中,输入以下详细信息 –

流程名称– 新客户工作流程(这可以是您想要的任何名称)

类别– 工作流程

实体– 联系人(这将是您在其上创建工作流的实体。在我们的例子中是联系人)

在后台运行此工作流(推荐) – 在我们创建后台异步工作流时选中此选项。最后,单击确定。

Mscrm 创建工作流步骤 3

步骤 4 – 在新流程窗口中输入以下详细信息 –

激活为– 过程

范围– 用户

开始时间– 创建记录

单击添加步骤→ 分配记录。

Mscrm 创建工作流步骤 4

步骤 5 – 您将看到工作流程中添加了一个新步骤。在此步骤中,我们将指定应将所有创建的联系人分配给的用户。输入步骤名称作为将记录分配给团队分配选项将默认为我们在其上创建工作流的实体(在我们的例子中为联系人)。单击查找图标。

Mscrm 创建工作流步骤 5

步骤 6 – 在查找窗口中,选择您想要的任何用户。您甚至可以选择要向其分配记录的特定团队。单击添加。

Mscrm 创建工作流步骤 6

步骤 7 – 通过单击添加步骤 → 发送电子邮件添加另一个步骤。在此步骤中,我们将配置向客户发送电子邮件。

Mscrm 创建工作流步骤 7

步骤 8 – 将添加一个新步骤。输入其名称作为向客户发送电子邮件。单击设置属性。

Mscrm 创建工作流步骤 8

步骤 9 – 在下一个配置电子邮件的窗口中,执行以下操作 –

– 单击从字段。在右侧面板上,选择 OwneringUser 和 User。单击添加 → 确定。

– 单击至字段。在右侧面板上,选择联系人和联系人。单击添加 → 确定。

主题– 输入相关主题。

正文– 输入相关的正文内容。

Mscrm 创建工作流步骤 9

步骤 10 – 单击保存,然后激活。

Mscrm 创建工作流步骤 10

步骤 11 – 在随后的流程激活确认弹出窗口中,单击激活。

Mscrm 创建工作流步骤 11

步骤 12 – 转到联系人选项卡并创建一个新联系人。通过保存记录创建新联系人后,您将看到设置为用户的所有者字段,该用户已在工作流中配置。此外,如果您单击“活动”选项卡,您将看到为此联系人创建的电子邮件活动。这确认工作流成功运行。

Mscrm 创建工作流步骤 12

工作流与插件

工作流和插件均可用于扩展和自动化 CRM 功能。在许多情况下,这两种方法可以互换使用以代替彼此。例如,如果您有向客户发送电子邮件的简单要求,您可以通过插件或工作流程来完成。

那么,您如何在创建工作流和插件之间做出选择?以下列表试图解释相同的 –

  • 尽管插件和工作流都可用于运行同步逻辑和异步逻辑,但同步逻辑通常首选插件,而异步逻辑则首选工作流。

  • 一般来说,为了实现复杂的业务逻辑,插件比工作流更受欢迎。当您想要实现相对简单的功能(例如发送电子邮件、分配用户等)时,首选工作流

  • 插件需要通过编码开发,而工作流可以由业务用户直接配置,无需任何工作流知识。

  • 工作流可以按需运行。因此,如果有用户想要手动运行某些逻辑的需求,工作流将是更好的选择。

  • 从性能影响来看,在请求频率较高的场景中,与实时工作流相比,同步插件提供了更好的性能(和吞吐量)。

结论

本章向我们介绍了 CRM 的一项非常重要的功能——工作流。我们首先了解了同步/异步工作流、消息、范围、步骤,最后查看了创建和运行工作流的现场示例。最后,我们看到了工作流和插件之间的区别。

Microsoft Dynamics CRM – 插件

插件是与 Microsoft Dynamics CRM 集成以修改或扩展平台标准行为的自定义业务逻辑。插件充当事件处理程序并注册为在 CRM 中的特定事件上执行。插件是用 C# 或 VB 编写的,可以在同步或异步模式下运行。

您将编写插件的一些场景是 –

  • 您希望在创建或更新 CRM 记录时执行一些业务逻辑,例如更新记录的某些字段或更新相关记录等。

  • 您希望针对某些事件(例如保存或更新记录)调用外部 Web 服务。

  • 您希望在打开任何记录时动态计算字段值。

  • 您希望自动化流程,例如针对 CRM 中的某些事件向您的客户发送电子邮件。

事件框架

CRM 中的事件处理框架通过将其传递到事件执行管道来处理同步和异步插件请求。每当事件触发插件逻辑时,都会向 CRM 组织 Web 服务发送一条消息,其他插件或平台的任何核心操作可以在其中读取或修改该消息。

插件管道阶段

整个插件管道分为多个阶段,您可以在其中注册自定义业务逻辑。指定的管道阶段指示插件代码在插件执行周期的哪个阶段运行。在下表中所有指定的管道阶段中,您只能在事件前和事件后注册您的自定义插件。您无法在 Platform Core Main Operations 上注册插件。

Event 艺名 描述
Pre-Event 预验证 在主系统操作之前执行的插件的管道阶段。在这个阶段注册的插件可以在数据库事务之外执行。
Pre-Event 术前 在主系统操作之前执行的插件的管道阶段。在此阶段注册的插件在数据库事务中执行。
Platform Core Operation 主要操作 Intransaction,系统的主要操作,如创建、更新、删除等。在此阶段不能注册自定义插件。仅限内部使用。
Post-Event 术后 在主要操作之后执行的插件的管道中的阶段。在此阶段注册的插件在数据库事务中执行。

每当 CRM 应用程序调用事件(如保存或更新记录)时,就会发生以下操作序列 –

  • 事件触发 Web 服务调用,执行通过事件管道阶段(事件前、平台核心操作、事件后)传递。

  • 信息在内部被打包成一个OrganizationRequest消息,最终发送到内部CRM Web服务方法和平台核心操作。

  • OrganizationRequest 消息首先由事件前插件接收,它可以在将信息传递给平台核心操作之前修改信息。平台核心操作后,将消息打包为OrganizationResponse,传递给后期操作插件。后操作插件可以选择修改此信息,然后再将其传递给异步插件。

  • 插件以上下文对象的形式接收此信息,该对象传递给 Execute 方法,然后进行进一步处理。

  • 在所有插件处理完成后,执行将传递回触发事件的应用程序。

插件消息

消息是插件(或业务逻辑)注册的事件。例如,您可以在 Create Message of Contact 实体上注册一个插件。每当创建新的联系人记录时,这都会触发业务逻辑。

对于自定义实体,以下是基于实体是用户所有还是组织所有的受支持消息。

Message Name 所有权类型
Assign 仅限用户拥有的实体
Create 用户拥有和组织拥有的实体
Delete 用户拥有和组织拥有的实体
GrantAccess 仅限用户拥有的实体
ModifyAccess 仅限用户拥有的实体
Retrieve 用户拥有和组织拥有的实体
RetrieveMultiple 用户拥有和组织拥有的实体
RetrievePrincipalAccess 仅限用户拥有的实体
RetrieveSharedPrincipalsAndAccess 仅限用户拥有的实体
RevokeAccess 仅限用户拥有的实体
SetState 用户拥有和组织拥有的实体
SetStateDynamicEntity 用户拥有和组织拥有的实体
Update 用户拥有和组织拥有的实体

对于默认的现成实体,支持的消息超过 100 条。其中一些消息适用于所有实体,而其中一些消息特定于某些实体。您可以在 SDK 内的 excel 文件中找到支持消息的完整列表:SDK\Message-entity support for plugins.xlsx

编写插件

在本节中,我们将学习编写插件的基础知识。我们将创建一个示例插件,该插件创建一个任务活动以在新客户添加到系统时跟进客户,即每当在 CRM 中创建新的 Contactrecord 时。

首先,您需要包含对Microsoft.Xrm.Sdk命名空间的引用CRM SDK 包含所有必需的 SDK 程序集。假设您已经下载并安装了第 2 章中的 SDK,打开 Visual Studio。创建一个类库类型的新项目。您可以将项目命名为 SamplePlugins,然后单击 OK。

Mscrm 插件创建与解决方案

Microsoft.Xrm.Sdk程序集的引用添加到您的项目中。该程序集存在于SDK/Bin 中

Mscrm 插件添加解决方案参考

现在,创建一个名为PostCreateContact.cs的类并从IPlugin扩展该类到目前为止,您的代码将类似于以下内容。

Mscrm 插件示例代码

您还需要添加对 System.Runtime.Serialization 的引用。添加所需的引用后,将以下代码复制到PostCreateContact类中。

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);
            }
         }
      }
   }
}

以下是此代码功能的分步说明 –

步骤 1 – 通过将 IServiceProvider 对象作为其参数来实现 Execute 方法。服务提供者包含对您将在插件中使用的许多有用对象的引用。

Step 2 – 使用 IServiceProvider 的 GetService 方法获取 IPluginExecutionContext 对象。

Step 3 – 从上下文对象的 InputParameters 集合中获取目标实体的对象。这个实体类对象指的是我们的插件将在其上注册的联系人实体记录。

第 4 步– 然后创建任务实体的对象并设置适当的主题、描述、日期、类别和关于对象 ID。aboutobjectid 指示正在为哪个联系人记录创建此活动记录。您可以看到代码使用 context.OutputParameters 获取父 Contact 记录的 id,并将其与您创建的 Task 实体记录相关联。

第 5 步– 使用 IServiceProvider 对象创建 IOrganizationServiceFactory 对象。

第 6 步– 使用 IOrganizationServiceFactory 对象创建 IOrganizationService 对象。

步骤 7 – 最后,使用此服务对象的 Create 方法。它创建了保存在 CRM 中的后续活动。

签署插件程序集

本节仅适用于首次注册插件程序集的情况。您需要使用密钥登录程序集才能部署插件。右键单击解决方案,然后单击属性。

Mscrm 插件解决方案属性

从左侧选项中选择签名选项卡,然后选中“签署程序集”选项。然后,从选择强名称密钥文件选项中选择新建。

Mscrm 插件标志程序集

输入密钥文件名作为示例插件(这可以是您想要的任何其他名称)。取消选中使用密码保护我的密钥文件选项,然后单击确定。单击保存。

Mscrm 插件签名程序集添加密钥

最后,构建解决方案。右键单击 → 构建。构建解决方案将生成程序集 DLL,我们将在下一章中使用它来注册此插件。

插件中的异常处理

通常情况下,您的插件逻辑需要处理运行时异常。对于同步插件,您可以返回InvalidPluginExecutionException异常,该异常将向用户显示错误对话框。错误对话框将包含您传递给异常对象的 Message 对象的自定义错误消息。

如果您查看我们的代码,我们会在 catch 块中抛出 InvalidPluginExecutionException 异常。

throw new InvalidPluginExecutionException(ex.Message); 

结论

插件对于任何自定义 CRM 实施来说绝对是至关重要的。在本章中,我们重点了解事件框架模型、管道阶段、消息和编写示例插件。在下一章中,我们将在 CRM 中注册此插件并查看它在端到端场景中的工作情况。

插件注册

在上一章中,我们创建了一个示例插件,用于在创建 Contact 记录时创建后续 Task 活动。在本章中,我们将看到如何使用插件注册工具在 CRM 中注册此插件。您可以在以下位置找到该工具:SDK/Tools/PluginRegistration/PluginRegistration.exe。

为方便起见,插件注册过程分为三个部分 –

  • 连接到服务器
  • 注册大会
  • 注册插件

连接到服务器

步骤 1从之前指定的位置运行PluginRegistration.exe单击创建新连接按钮。

Mscrm 插件注册新连接

第 2 步– 在登录窗口中,选择 Office 365,因为我们使用的是在线版 CRM。输入您的凭据并单击登录。

Mscrm插件注册登录

第 3 步– 该工具将打开,如下图所示。

Mscrm 插件注册程序集列表

注册大会

步骤 1 – 转到注册 → 注册新程序集。

Mscrm 插件注册程序集

步骤 2 – 这将打开注册新程序集窗口。单击导航图标并找到您在上一章中创建的插件 DLL。

Mscrm 插件注册加载程序集

步骤 3 – 导航 DLL 后,单击加载程序集。这将填充 SamplePlugins 程序集及其所有插件类。您可以看到下面突出显示PostCreateContact插件类。如果你的插件程序集有 3 个插件类,它会显示列出的三个插件。

Mscrm插件注册新程序集2

步骤 4 – 选择隔离模式为沙盒,位置为数据库,然后单击注册选定的插件。如果注册成功,它将显示一条成功消息。

注册插件

现在我们将注册调用各个插件的特定步骤。

步骤 1 – 选择 PostCreateContact 插件。

Mscrm 插件步骤选择插件

步骤 2 – 单击注册 → 注册新步骤。

Mscrm 插件步骤 注册新步骤

第 3 步– 我们将在创建 Contact 实体、操作后阶段和同步模式时注册此插件。

消息– 创建

主要实体– 联系方式

事件管道执行阶段– 操作后

执行模式– 同步

默认保留其余选项,然后单击“注册新步骤”。

Mscrm 插件步骤注册新步骤详细信息

您可以看到添加到插件中的新步骤。

MScrm 插件步骤添加步骤

现在我们将转到 CRM 并测试我们的插件是否正常工作。请注意,这些测试步骤特定于我们的示例插件。

测试插件

转到联系人选项卡并创建新记录。保存记录后,您可以看到已创建并与此记录关联的新活动。

Mscrm 插件创建联系人

您可以单击活动以查看我们在代码中设置的详细信息。

Mscrm 插件创建活动

这证实了我们的插件运行成功。同样,您可以扩展插件以实现高度复杂的功能。

Microsoft Dynamics CRM – 网络服务

Microsoft Dynamics CRM 提供了两个重要的 Web 服务,用于从外部应用程序访问 CRM 和调用 Web 方法来执行常见的业务数据操作,例如在 CRM 中创建、删除、更新和查找。

考虑以下场景 –

  • 您有一个外部 .NET 应用程序,它需要与 CRM 通信。例如,您可能希望在外部应用程序中注册新客户时在 CRM 中插入联系人记录。

  • 或者,您可能希望在 CRM 中搜索记录并在您的外部应用程序中显示搜索结果。

在这种情况下,您可以使用 CRM 公开的 Web 服务在您的应用程序中使用它们,并在 CRM 中执行创建、删除、更新和查找操作。

IDiscoveryService Web 服务

此 Web 服务返回指定用户所属的组织列表以及每个组织的 URL 端点。

IOrganizationService Web 服务

此 Web 服务是用于访问 CRM 中的数据和元数据的主要 Web 服务。IOrganizationService 使用两个重要的程序集—— Microsoft.Xrm.Sdk.dllMicrosoft.Crm.Sdk.Proxy.dll这些程序集可以在Bin文件夹内的 CRM SDK 包中找到

微软.Xrm.SDK.dll

此程序集定义了核心 xRM 方法和类型,包括使与 Microsoft Dynamics CRM 的连接更简单的代理类、身份验证方法和服务合同。

Microsoft.Crm.Sdk.Proxy.dll

该程序集定义了非核心消息的请求和响应以及处理组织数据所需的枚举。以下是这两个程序集支持的命名空间。

这些程序集中的每一个都支持某些消息,这些消息将用于处理存储在任何实体中的数据。可以在以下链接中找到他们支持的完整消息列表 –

支持的 xRM 消息https://msdn.microsoft.com/en-us/library/gg334698.aspx

支持的 CRM 消息https://msdn.microsoft.com/en-us/library/gg309482.aspx

IOrganizationService Web 服务方法

IOrganizationService提供了八种方法,可以让你执行系统和自定义实体上的所有常用操作以及组织的元数据。

Sr.No 方法和说明
1

IOrganizationService.Create

创建记录。

2

IOrganizationService.Update

更新现有记录。

3

IOrganizationService. Retrieve

检索记录。

4

IOrganizationService. RetrieveMultiple

检索记录集合。

5

IOrganizationService. Delete

删除一条记录。

6

IOrganizationService. Associate

在记录之间创建链接。

7

IOrganizationService.Disassociate

删除记录之间的链接。

8

IOrganizationService.Execute

用于普通记录处理以及案例解析、重复检测等特殊处理。

网络服务示例

要了解 Web 服务在 CRM 中的工作方式,我们将查看 CRM SDK 提供的示例。在这个例子中,我们将创建一个新的 Account 记录,更新它,最后使用 CRM IOrganizationService Web 服务删除它

步骤 1 – 打开您提取 CRM SDK 的文件夹。现在通过浏览到以下位置打开 QuickStartCS.sln 解决方案:SDK\SampleCode\CS\QuickStart

Mscrm Web 服务示例步骤 1

第 2 步– 我们将探索QuickStart with Simplified Connection项目。在这个项目中打开app.config默认情况下,此文件中connectionStrings部分将被注释。

Mscrm Web 服务示例步骤 2

从此,取消注释第一个连接字符串键并编辑以下三个详细信息 –

Url – 指定 CRM 实例的 URL。在我们的案例中,由于我们使用的是 CRM 的在线版本,因此您必须提及该 URL。

用户名– 您的 CRM Online 用户名。

密码– 您的 CRM 在线密码。

Mscrm Web 服务示例步骤 2 2

第 3 步– 打开此项目中SimplifiedConnection.cs文件并在其中打开Runmethod。

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

第 4 步– 此方法基本上演示了使用 CRM Web 服务的所有 CRUD 操作。该代码首先创建一个组织实例,然后创建一个帐户记录,更新创建的记录,最后删除它。让我们看看这段代码的重要组成部分。要在此代码运行时查看 CRM 中的动态更改,您可以逐步调试此代码(如下所述),同时查看 CRM 中的更改。

步骤 4.1 – 使用我们在步骤 2 中修改的连接字符串建立与组织的连接

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

步骤 4.2 – 获取 CRM 组织 Web 服务的代理实例。

_orgService = new OrganizationService(connection) 

步骤 4.3 – 创建一个新的 Account 实体对象并设置其 Name、AccountCategoryCode 和 CustomerTypeCode。

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

步骤 4.4 – 使用组织服务的创建方法创建新记录。

_accountId = _orgService.Create(account); 

如果您导航到 CRM,您将看到一个新创建的帐户记录。

Mscrm Web 服务示例步骤 4_4

步骤 4.5 – 创建帐户后,该服务会使用 Retrieve Web 服务方法从 CRM 检索记录。

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

步骤 4.6 – 获得检索到的记录后,您可以设置记录的更新值。

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

步骤 4.7 – 设置记录的更新值后,使用更新 Web 服务方法将记录更新回 CRM 数据库。

_orgService.Update(retrievedAccount); 

如果您在 CRM 中打开记录,您将看到这些值在那里更新。

Mscrm Web 服务示例步骤 4_7

步骤 4.8 – 最后,使用删除 Web 服务方法删除记录。

_orgService.Delete(Account.EntityLogicalName, _accountId); 

如果您现在刷新 CRM 中的同一条记录,您将看到该记录不再可用,因为它已被删除。

Mscrm Web 服务示例步骤 4_8

结论

在本章中,我们处理了 CRM 提供的两个重要 Web 服务以及如何从外部应用程序使用这些 Web 服务来执行各种 CRUD 操作的工作示例。

Microsoft Dynamics CRM – 解决方案

解决方案提供了用于打包、安装和卸载组件以匹配您的业务功能的框架。解决方案允许定制人员和开发人员创作、打包和维护扩展 CRM 的软件单元。在 CRM 中执行的任何自定义、扩展或配置都使用解决方案进行打包、管理和分发。解决方案可以从源组织导出为 zip 文件,然后可以导入到目标组织中。

为了理解这一点,请考虑以下示例场景 –

  • 作为开发人员或定制人员,您已经在开发环境中扩展或定制了 CRM。现在您想要打包您的更改并将其移动到下一个环境。为此,您可以创建单独的解决方案并在更高的环境中发布它们。

  • 作为第三方 CRM 提供商,您创建了一个 CRM 模块,该模块允许使用外部 Web 服务 API 管理 Microsoft Dynamics CRM 实体中的数据。现在,您想将此模块出售给其他客户。使用解决方案,您可以打包此模块并将它们分发给其他客户,他们将能够安装此解决方案并使用您的模块提供的功能。

解决方案类型

默认系统解决方案

系统解决方案包含在 Microsoft Dynamics CRM 中定义的开箱即用的解决方案组件,没有任何自定义。系统解决方案中的许多组件都是可定制的,可用于托管解决方案或非托管定制。

在本教程中,我们没有创建任何解决方案,而是自定义默认系统解决方案。如果您还记得,我们去了设置 → 自定义 → 自定义系统。此选项直接自定义默认解决方案。

托管解决方案

托管解决方案是已完成且旨在分发和安装的解决方案。托管解决方案可以安装在系统解决方案或其他托管解决方案的顶部。

要点

  • 如果您从一个组织导出托管解决方案并将其导入另一个组织,则无法在新组织中编辑该解决方案。

  • 托管解决方案不直接引用系统解决方案。

  • 卸载托管解决方案会卸载与该解决方案关联的所有自定义项。

  • 默认情况下,无法在目标组织中自定义托管解决方案。但是,使用托管属性的概念,您可以定义解决方案组件是否可自定义,如果是,则在将解决方案导出为托管解决方案后,组件的哪些特定部分将可自定义。

非托管解决方案

非托管解决方案是仍在开发中且不打算分发的解决方案。非托管解决方案包含 CRM 组件的所有非托管自定义,包括任何添加、修改、删除或删除的组件。默认情况下,任何新解决方案都是非托管解决方案。但是,您可以将非托管解决方案导出为托管或非托管解决方案。

要点

  • 如果您从一个组织导出非托管解决方案并将其导入另一个组织,您可以在新组织中编辑该解决方案。

  • 非托管解决方案直接引用系统解决方案。因此,对一个非托管解决方案所做的更改将应用​​于引用相同组件的所有非托管解决方案,包括系统解决方案。

  • 如果您从非托管解决方案中删除解决方案组件,该组件将从系统中永久删除并且不再可用。如果您只想从特定的非托管解决方案中删除组件,请使用删除而不是删除。

  • 卸载非托管解决方案不会删除关联的自定义。它只是从系统中删除解决方案,但您所做的更改仍然存在。

解决方案组件

解决方案可用于打包以下组件,这些组件可使用默认、非托管或托管解决方案进行自定义。

Component Type 成分
Schema 实体
Attributes
Relationships
Global Option Sets
User Interface 应用功能区
SiteMap
Forms
Entity Ribbons
Web Resources
Analytics 仪表盘
Reports
Visualizations
Process/Code 流程
Dialogs
Workflows
Plugins
Assemblies
Processing Steps
Templates 邮件合并
Email
Contract
Article
Security 安全角色
Field Level Security Profiles

创建解决方案

步骤 1 – 导航到设置 → 解决方案。单击新建。

Mscrm 创建解决方案步骤 1

步骤 2 – 在随后出现的窗口中,输入以下详细信息,然后单击保存并关闭。

显示名称– 示例解决方案(这可以是您想要的任何名称)。

名称– 将根据显示名称自动设置。但是,您可以更改此设置。

发布者– 默认发布者。解决方案发布者提供了一个通用的自定义前缀和选项值前缀。定义解决方案发布者控制您的托管解决方案在分发后如何更新。但是,对于此示例和大多数一般情况,您可以将其设置为默认发布者。

版本– 使用以下格式指定版本:major.minor.build.revision。例如:1.0.0.0。

Mscrm 创建解决方案步骤 2

默认情况下,每个解决方案都作为非托管解决方案添加。添加解决方案后,您可以通过在此解决方案的上下文中创建解决方案组件或通过添加来自其他解决方案的现有组件来添加解决方案组件。例如,您可以在这个新解决方案的上下文中创建新实体、表单等。

导出解决方案

一旦您准备好要打包为托管或非托管解决方案的所有更改,您可以按如下方式导出您的解决方案。

步骤 1 – 打开源组织并导航到设置 → 解决方案。选择要导出的解决方案,然后单击“导出”按钮。

Mscrm 导出解决方案步骤 1

步骤 2 – 在“发布自定义”窗口中,单击“发布所有自定义”,然后单击“下一步”。

Mscrm 导出解决方案步骤 2

步骤 3 – 在接下来的窗口中,您可以选择任何系统设置,例如自动编号、日历设置等,以与解决方案一起导出。现在,您可以避免选择任何选项并单击下一步。

Mscrm 导出解决方案步骤 3

步骤 4 – 在包类型窗口中,您可以选择是否要将包导出为托管或非托管解决方案。对于此示例,让我们将其导出为非托管。完成后,单击下一步。

Mscrm 导出解决方案步骤 4

步骤 5 – 在下一个窗口中,您可以看到您正在使用的 CRM 的源版本,并且可以选择目标版本。单击导出。

Mscrm 导出解决方案步骤 5

步骤 6 – 单击“导出”后,解决方案将导出为 zip 文件。将此 zip 文件保存在系统上的所需位置。

Mscrm 导出解决方案步骤 6

导入解决方案

现在,我们将在上一节中导出的解决方案 zip 文件导入到新的目标组织。

步骤 1 – 打开目标组织并导航到设置 → 解决方案。单击导入。

Mscrm 导入解决方案步骤 1

步骤 2 – 浏览从导出步骤下载的 zip 文件,然后单击下一步

Mscrm 导入解决方案步骤 2

步骤 3 – 在下一个窗口中,您可以根据需要查看解决方案包的详细信息。单击导入将启动解决方案导入过程。

Mscrm 导入解决方案步骤 3

步骤 4 – 导入过程完成后,将显示成功或失败的状态。如果该过程成功,请单击发布所有自定义。如果解决方案导入失败,它将为您提供有关导入过程中哪一步失败的详细错误日志。

Mscrm 导入解决方案步骤 4

第 5 步– 我们完成了。解决方案将成功导入目标组织。单击关闭。

解决冲突

由于您可以有多个开发人员致力于自定义和扩展 CRM,因此您将拥有多个托管和非托管解决方案。导出和导入这些解决方案有时会导致冲突场景。例如,假设“解决方案 A”包含表单上的一个字段,而“解决方案 B”已删除该字段,而“解决方案 C”已重命名该字段。在这种情况下,最终的变化是什么?在这种相互冲突的情况下,CRM 使用两种方法。

合并– 这种方法用于用户界面组件,如命令栏、功能区和站点地图。按照这种方法,解决方案组件是从底层重新计算的,组织的非托管定制是最后应用的。

Top Wins – 此方法用于除用户界面组件之外的所有其他冲突场景。根据这种方法,最后一个更改(托管或非托管)具有优先级并得到应用。

结论

在本章中,我们介绍了解决方案的概念以及不同类型的解决方案及其组件。然后我们学习了如何创建、导出和导入解决方案。最后,我们研究了两种冲突解决策略,当我们有多个托管和非托管解决方案影响相同的解决方案组件时,就会发生这种情况。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁