我正在尝试将一些自定义项从我们的开发环境迁移到测试环境。我在解决方案中拥有所需的一切。当我将其导入测试环境时,它会因错误而失败;
已添加具有相同键的项目。
在我从解决方案导入屏幕下载的错误文件中,它是针对Incident实体的Form ItemType列出的。我的解决方案包含一个新的自定义表单,它还包含2个默认“信息”表单的定义。
使用详细跟踪,我可以在xml字符串中看到错误;
<formXml LocalizedName="Case" OriginalName="Case"
Description="Service request case associated with a contract."
id="Incident" processed="true">
<result result="failure" errorcode="0x80044150"
errortext="An item with the same key has already been added."
datetime="09:52:28.65" datetimeticks="635049859486557248" />
</formXml>
这是在entitySubhandlers节点内。然而,没有什么可以确切地指出问题是什么。有任何想法吗?感谢。
答案 0 :(得分:2)
我今天遇到了同样的问题并找到了解决方案。
在CRM中,您拥有显示名称,名称和物理(数据库列)名称。由于某种原因,物理名称有时会生成大写字母,有时则不会。
我的情景: 与“Field 1”字段联系 (显示 - 名称 - 物理) 开发环境:“Field 1”“new_field1”“new_Field1” 测试环境:“Field 1”“newfield1”“new_field1”=&gt;请注意,这里没有资本F
当我删除dev上的字段并重新创建它时发生。以前在dev上的物理名称是“new_Field1”,现在它是“new_field1”。
我在网上找到的建议解决方案是删除该字段并重新创建它。这显然不适合我,但它可能对你有用。请参阅:https://community.dynamics.com/crm/b/crmpowerobjects/archive/2013/07/01/field-is-not-unique-error-when-importing-a-solution-in-crm-2011.aspx
我的解决方案是直接在数据库中更新字段(如果您有CRM在线环境,我不能这样做,我使用的是CRM 2011内部部署Rollup 15,SQL Server 2008 R2 SP1)。 您需要在Metadataschema.Attributes中修改表模式+记录的物理名称。这样做需要您自担风险,因为MS不支持此操作并进行完整备份。
答案 1 :(得分:1)
将自定义导入Dev环境时出现同样的错误: 已在用户实体上添加了具有相同密钥的项目。
我看到了詹姆斯·伍德的答案,并对两侧的用户实体进行了比较。并意识到我双方都有3个自定义字段。这些是由第三方解决方案在live和Dev上单独创建的。
我刚删除了Dev环境中的3个自定义字段。当我再次尝试导入时,它工作得很好。
感谢詹姆斯的提示。
答案 2 :(得分:1)
我遇到了同样的问题,这是由更改现有字段的类型引起的。
当前系统有一个名为ecs_salutation
的字段单行文字。该解决方案已删除,并将此字段作为选项集
导入会失败,因为字段类型不匹配。我必须手动从表单中删除字段,从实体中删除它并重新发布,然后才能成功导入解决方案
答案 3 :(得分:0)
我相信当你在两个环境中都有一个字段(具有相同的模式名称)但它们的类型不同时,就会发生这种情况。
您是否已经自定义了测试环境?如果是这样,我会查看比较该实体的自定义字段。
答案 4 :(得分:0)
我无法解决这个问题。我记录了我的定制,将我们的测试环境(它本身就是生产的恢复)恢复为新的开发环境。一旦我这样做,一切都按预期工作。
答案 5 :(得分:0)
我在将自定义从dev导入生产时遇到了这个问题。原来有一个自定义字段在dev中被删除,然后使用相同的模式名称重新创建,但是不同的数据类型。我在生产中删除了该字段,并且自定义导入成功。