更改实体模式名称而不删除并重新创建

时间:2017-05-23 18:12:51

标签: refactoring dynamics-crm microsoft-dynamics

我与供应商合作开发Microsoft Dynamics 365 CRM上的新项目,具有相当多的自定义功能和自定义实体。供应商对我不同意的实体名称做了一些假设,并且我想更改实体名称。我被告知他们可以更改显示名称,但不能删除实际的实体模式名称而不删除重新创建它,这将是一项大量的工作,因为他们需要然后重新配置围绕这些实体的所有关系和业务规则。

我并不是说他们错了,但有点让我感到震惊的是,微软不会有任何重构实体名称的方法。这不是一个实时应用程序 - 它处于相当早期的开发阶段。我想知道,有没有什么办法可以在不删除和重新创建实体名称的情况下更改实体名称?

我有一个想法是导出解决方案并手动编辑导出的解决方案;我相信当您导出解决方案时,它会输出一个zip文件,然后可以将其导入到单独的环境中 - 是否可以手动修改该zip文件以更改实体模式名称,然后导入?如果这意味着我们要消灭数据,我就不在乎了。

4 个答案:

答案 0 :(得分:7)

您的供应商是正确的,这是不可能的。由于系统自定义时生成的依赖项数量,模式名称在创建时被锁定。

虽然您可以尝试手动编辑解决方案文件,但不能supported

  

编辑解决方案文件以编辑除以外的任何解决方案组件   不支持色带,表单,SiteMap或已保存的查询。

所以,即使你让它发挥作用,也可能会有点痛苦,而且你冒着为自己产生问题的风险。自定义直接影响包括数据库在内的大量元素,并且很难预测确切的后果,因为这么多功能都是我们无法控制的实现。如果你遇到这些问题,那么微软可能不会有所帮助,因为你不支持。

从经验来讲,虽然令人恼火,但这是最好离开并继续前进的事情之一。最终用户甚至不知道模式名称,它只对技术人员可见。实体显示名称会定期更改,因此找到与显示名称不同的模式名称并不罕见 - 开箱即用的实体就是这样,即事件,kbarticle,transactioncurrency,importmap,template,list,salesorder,bulkoperation to name一些。帐户似乎总是被重命名为组织或公司。更改模式名称的好处对于所涉及的工作和风险来说是如此之小,如果是我,我会花时间和精力在其他地方。

答案 1 :(得分:6)

因为它很早就开始删除和重新创建了。黑客攻击解决方案XML不会改变数据库中的表或字段名称。当然,您可能可以放弃导出,编辑和重新导入到不同的环境,但重新导出和导回到原始环境不会解决它。

答案 2 :(得分:0)

XRM Toolbox Attribute Manager(由 Daryl LaBar 提供)是一个非常方便的工具,用于“重命名”大多数 Dynamics CRM/Dataverse 属性(选项集等复杂属性除外)。这里的“重命名”是指:

  1. 使用旧名称和架构创建新属性;
  2. 将数据从旧属性复制到新属性;
  3. 删除旧属性。

还有更多的步骤,您可以很好地控制可以选择不使用的步骤。属性管理器的真正优势在于它可以移动数据,允许您更改生产系统上的实体名称——如果您敢...

Daryl 编写了一个简洁易用的工具。话虽如此,请务必设置一些测试,以便您熟悉它的工作原理。

答案 3 :(得分:0)

是的,可以在不删除和重新创建 UI 中的所有元数据的情况下更改实体的逻辑名称。

但是,您可能需要从一个新的 env 开始或重置现有的 env,因为大量元数据缓存在实例中,并且在导入时会导致冲突。 例如,即使删除后,SDK 步骤 GUID 也会发生冲突。

重命名实体的一般过程如下所示:

  1. 替换逻辑名称
  2. 替换逻辑 ID 名称
  3. 替换物理 ID 名称
  4. 替换集合名称
  5. 替换状态和状态代码名称
  6. 更新关系
  7. 重命名文件

任何具有高级查找和替换功能的工具都可以,但我个人推荐 IntelliJ Idea,因为它最初为您的解决方案编制索引,使所有后续操作几乎是即时的。