默认解决方案屏幕中未显示自定义实体 - Dynamics CRM 2013

Custom entities not shown in default solution screen - Dynamics CRM 2013

我遇到过这种非常奇怪的情况,我希望其他人也遇到过(最好的情况),或者也许具有丰富 CRM 经验的人可以指出我应该寻找的方向寻求可能的解决方案。我似乎无法在网上找到与此问题接近的任何内容。

我们有 4 个环境:DEV、DEV-IST、UAT 和 PreProd。我们按以下顺序推进 CRM 部署:DEV -> DEV-IST -> UAT -> PreProd。我们的开发还没有上线,因此我没有包括生产。

我们使用以下步骤推进 CRM 部署。

  1. 转到开发。

  2. 将任何非托管解决方案导出到托管解决方案。然后,我们将这些托管解决方案复制到包部署程序的 'PkgFolder' 中。

  3. 然后我们备份DEV-IST CRM(组织A)数据库并将其恢复到(组织A)的DEV数据库服务器。然后我们 运行 组织 A 上的包部署器,这样它现在就拥有了我们在开发中所做的所有更改。在我们进一步做任何事情之前,我们登录到组织 A 并转到以下屏幕:主页 -> 设置 -> 自定义 -> 自定义系统。我可以在实体节点下看到所有自定义实体。

  4. 我现在备份组织 A(现在包括我的开发更新)并将备份文件复制到 DEV-IST 数据库服务器。

  5. 我先去 DEV-IST 上的 Deployment Manager 禁用组织然后删除它。

  6. 现在我转到 DEV-IST 的 SQL 数据库并从上面的步骤 4 恢复备份并覆盖组织 A 数据库。

  7. 我回到 DEV-IST 上的 Deployment Manager 并使用导入组织重新导入组织 A,因此现在有一个组织 A 现在更新了我的开发更新。上述过程可确保我们以极短的停机时间部署更新。

  8. 但是,我的问题是,在第 7 步之后,当我登录组织并转到主页 -> 设置 -> 自定义 -> 自定义系统...我看不到任何自定义实体!

任何可能导致此问题的想法。奇怪的是,我注意到我在 DEV-IST 和 PreProd 中看不到自定义实体,但在 DEV 和 UAT 环境中可以看到它们。

PS。我已经尝试点击 'Publish all customizations' 但没有任何效果。

你的部署过程真的很复杂,我看不出你为什么要以如此复杂的方式进行定制转移。您应该简单地将带有定制的解决方案从 DEV 环境转移到 DEV-IST 环境,然后再转移到 UAT 和 PreProd。

在一个环境中备份你的数据库并在另一个环境中恢复它肯定不是更快的方法(因为你说这样的过程会让你的环境停机时间很短)。 此外,如果您坚持以这种方式进行部署,您不仅应该从 Deployment Manager 中删除您的组织,还应该从服务器中删除数据库(并恢复备份的数据库)。

如果您只是为 client/company 自定义 CRM,则不应使用托管解决方案。托管解决方案用于共享一些您想要共享或出售给其他人的可重用定制。请阅读 Shan McArthur 的精彩 post,这将使您更好地理解问题: https://community.adxstudio.com/blogs/shan/2014-01-17-converting-crm-solutions-from-managed-to-unmanaged/

如果您必须使用托管解决方案 - 您应该只在最终的 PROD 环境中使用,而不是在您的暂存环境中(您应该完全控制自定义以提供修补程序)

编辑: 我会把它添加为评论,但我还不能发表评论,所以我必须编辑我的回复。我复制了你的过程,我可以看到所有环境中的所有实体,所以一定有你正在做的特定事情导致了这种行为。您是否检查过恢复数据库后所有自定义实体都存在于恢复的数据库中? (每个实体都是一个单独的 table,与实体同名)。此外,我将比较数据库中所有与解决方案相关的 tables,您可以在其中看到自定义实体,而在数据库中您看不到自定义实体(因此将是 tables SolutionBase、SolutionComponenBase、MetadataSchema.Entity 和所有其他 MetadataSchema。* tables)。您可以做的最后一个实验是将数据库保存在您看不到自定义实体的地方,删除托管解决方案,导入托管解决方案(标准方式)并检查实体是否存在。我敢打赌他们会在那里,所以下一步将再次用一些红门比较工具比较数据库(所有 metadata/solution tables),也许这会让你指向正确的方向.

基本上,CRM 中的元数据是以这种方式构建的 - 从默认解决方案中提取所有内容,然后按导入顺序应用所有托管解决方案并构建生成的元数据。您的案例看起来像 CRM "forgot" 在默认解决方案上应用托管解决方案(我相信这可能是部署管理器的一个未知错误,应该在组织导入期间设置一些东西)。我希望您在比较环境之间的数据库数据时会发现这一点。

我知道这不是一个有效的回复,通常我不会把它写成一个答案,而是一个评论,但我还不能评论,很遗憾:(

我终于弄清了这个问题的真相,我想我会在这里为遇到同样问题的其他人更新它。 'Someone' 在 CRM 服务器上进行注册表编辑,以使 CRM return 仅显示任何查询的前 250 条记录。由于自定义实体高于此数字,因此未显示。我已经恢复了这个更改,现在我能够看到自定义实体。