更新到 Microsoft Dynamics 365后,源组织与目标组织之间的业务流程实体名称不匹配可能会导致解决方案导入失败

本文提供了更新到 Microsoft Dynamics 365 后发生的错误的解决方案。

适用范围:Microsoft Dynamics CRM
原始 KB 编号: 4020021

症状

从当前部署了包含业务流程流的非托管解决方案的组织创建托管解决方案后,然后将该解决方案导入到另一个组织。 导入解决方案后,如果源和目标组织都更新为Dynamics 365。 然后,另一个解决方案 (例如,从同一源创建原始解决方案) 的更新版本,并使用相同的业务流程流及其相应的业务流程实体导入,将发生以下错误:

“无法导入此过程,因为它无法更新或没有唯一的名称。”

原因

升级到 Dynamics 365 时,业务流程流 (BPF) 由业务流程实体表示。 这些实体在升级过程中生成,并使用以下格式命名:

<SolutionPrefix>_BPF_<ProcessId>

因为从原始组织生成的托管解决方案中的业务流程实体的名称不同于第二个组织中的实体。 升级到Dynamics 365后,由于同一业务流程的业务流程实体名称冲突,将解决方案导入到第二个组织将失败。

解决方案

在创建和导出解决方案的源 (非托管) 组织上执行以下步骤。

  1. 将包含业务流程流的现有解决方案导出为 8.1 或 8.0 作为非托管解决方案。 这样做是为了确保导出的解决方案不包含支持业务流程实体。

  2. 如果活动) ,则取消激活 (并删除业务流程 (这将删除相应的业务流程实体,其中的任何数据) ,以及源系统中的非托管解决方案。

  3. 更新新导出的非托管解决方案。

    1. 重命名 customizations.xml 中每个工作流节点的 UniqueName 节点,以使用相应的客户解决方案发布服务器前缀。 这样做是为了确保当此解决方案重新导入到源 (非托管) 环境中时,生成的业务流程流实体将与已存在业务流程的目标组织中存在的实体具有相同的名称,以解决导致问题的根本原因的命名冲突。
    2. 从 solution.xml 文件中的 MissingDependencies 父节点中删除缺少的依赖项条目 (旧new_bpf_<processid>命名实体的所有 MissingDependency 节点) (如果存在)。 确保 MissingDependencies 父节点本身已保留,并在其后为空。 这是一个已知问题,将来将得到解决。 删除缺少的依赖项后,应如下所示: <MissingDependencies></MissingDependencies>
    3. 将 solution.xml 中 ImportExportXml 根元素开头的版本节点更新为 8.1 或 8.0,具体取决于你在上述步骤 1 中执行 了导出为 操作的版本。 可以将次要版本号保留为原样。 需要此更新才能确保此处看到的版本与 导出为的版本一致。 对于 8.1) 的参考 (,它将类似于 <ImportExportXml 版本= “8.1.0000.0788” ,后跟标记属性的其余部分。
  4. 将修改的非托管解决方案导入回源 (非托管) 环境。

  5. 步骤 4 将创建 (相同定义和 ID) 的业务流程流,以及正确命名为“业务流程流”的关联实体。 可以通过导航到“设置”、“自定义”、选择“自定义系统”并验证业务流程实体的名称来验证它。 他们现在应使用相应的解决方案前缀。

  6. 现在将此解决方案导出为托管解决方案,并尝试将其导入到目标组织。 现在,在升级到 Dynamics 365 之前,它应成功导入已包含通过托管解决方案引入的这些业务流程的目标组织。