CRM解决方案导入失败“已添加具有相同密钥的项目”

时间:2015-10-30 15:39:57

标签: dynamics-crm

我在其中一个CRM组织中有一种奇怪的行为。

当我将解决方案(仅包含帐户实体)导出为非托管解决方案时,它可以正常工作。

但是当我重新导入这个相同的解决方案而不改变任何东西时,我得到了这个错误

“已添加具有相同键的项目”。

我发现我必须从解决方案(和一个关系)中删除属性“ownerid”然后它才有效...

这是属性

    <attribute PhysicalName="OwnerId">
          <Type>owner</Type>
          <Name>ownerid</Name>
          <LogicalName>ownerid</LogicalName>
          <RequiredLevel>systemrequired</RequiredLevel>
          <DisplayMask>ValidForAdvancedFind|ValidForForm|ValidForGrid|RequiredForForm</DisplayMask>
          <ImeMode>auto</ImeMode>
          <ValidForReadApi>1</ValidForReadApi>
          <ValidForCreateApi>1</ValidForCreateApi>
          <IsCustomField>0</IsCustomField>
          <IsAuditEnabled>1</IsAuditEnabled>
          <IsSecured>0</IsSecured>
          <IntroducedVersion>5.0.0.0</IntroducedVersion>
          <SourceType>0</SourceType>
          <LookupStyle>single</LookupStyle>
          <LookupTypes>
            <LookupType id="00000000-0000-0000-0000-000000000000">8</LookupType>
            <LookupType id="00000000-0000-0000-0000-000000000000">9</LookupType>
          </LookupTypes>
          <displaynames>
            <displayname description="Vertriebsverantwortlicher" languagecode="1031" />
            <displayname description="Owner" languagecode="1033" />
            <displayname description="Właściciel" languagecode="1045" />
          </displaynames>
          <Descriptions>
            <Description description="Geben Sie den Benutzer oder das Team ein, der bzw. das mit der Verwaltung des Datensatzes betraut ist. Dieses Feld wird aktualisiert, wenn der Datensatz einem anderen Benutzer zugewiesen wird." languagecode="1031" />
            <Description description="Enter the user or team who is assigned to manage the record. This field is updated every time the record is assigned to a different user." languagecode="1033" />
            <Description description="Wprowadź nazwę użytkownika lub zespołu, który zarządza rekordem. To pole jest aktualizowane za każdym razem, gdy rekord zostanie przypisany do innego użytkownika." languagecode="1045" />
          </Descriptions>
        </attribute>

我还检查了服务器日志,发现了这个:

<importexportxml start="635818108905329459" stop="635818109069971342" progress="22.2222222222222" processed="true">
<solutionManifests>
    <solutionManifest languagecode="1031" id="Firma_Transfer" LocalizedName="Firma_Transfer" processed="true">
        <UniqueName>Firma_Transfer</UniqueName>
        <LocalizedNames>
            <LocalizedName description="Firma_Transfer" languagecode="1031" />
        </LocalizedNames>
        <Descriptions />
        <Version>1.0.0</Version>
        <Managed>0</Managed>
        <Publisher>
            <UniqueName>myorg</UniqueName>
            <LocalizedNames>
                <LocalizedName description="Myorg" languagecode="1031" />
            </LocalizedNames>
            <Descriptions />
            <EMailAddress />
            <SupportingWebsiteUrl />
            <Addresses>
                <Address>
                    <City />
                    <Country />
                    <Line1 />
                    <Line2 />
                    <PostalCode />
                    <StateOrProvince />
                    <Telephone1 />
                </Address>
            </Addresses>
        </Publisher>
        <results />
        <result result="success" errorcode="0" errortext="" datetime="13:08:12.07" datetimeticks="635818072920798192" />
    </solutionManifest>
</solutionManifests>
<upgradeSolutionPackageInformation>
    <upgradeRequired>0</upgradeRequired>
    <upgradeValid>1</upgradeValid>
    <fileVersion>7.0.1.129</fileVersion>
    <currentVersion>7.0.1.129</currentVersion>
    <fileSku>OnPremise</fileSku>
    <currentSku>OnPremise</currentSku>
</upgradeSolutionPackageInformation>
<entities>
    <entity LocalizedName="Firma" OriginalName="Firma" Description="" id="Account" processed="true">
        <result result="failure" errorcode="0x80044150" errortext="Ein Element mit dem gleichen Schlüssel wurde bereits hinzugefügt." datetime="13:08:26.96" datetimeticks="635818073069658863" />
    </entity>
</entities>
<nodes />
<settings />
<dashboards />
<securityroles />
<workflows />
<templates />
<optionSets />
<ConnectionRoles />
<SolutionPluginAssemblies />
<SdkMessageProcessingSteps />
<ServiceEndpoints />
<webResources />
<reports />
<FieldSecurityProfiles />
<convertrules />
<routingrules />
<Slas />
<languages>
    <language>
        <result result="success" errorcode="0" errortext="" datetime="13:08:11.07" datetimeticks="635818072910798185" />
    </language>
</languages>
<entitySubhandlers>
    <savedQuery LocalizedName="Firma" OriginalName="Firma" Description="" id="Account" processed="false"/>
    <formXml LocalizedName="Firma" OriginalName="Firma" Description="" id="Account" processed="false">
    </formXml>
    <entityCustomResources LocalizedName="Firma" OriginalName="Firma" Description="" id="Account" processed="false"/>
    <entityRibbon LocalizedName="Firma" OriginalName="Firma" Description="" id="Account" processed="false"/>
    <savedQueryVisualization LocalizedName="Firma" OriginalName="Firma" Description="" id="Account" processed="false">
    </savedQueryVisualization>
</entitySubhandlers>
<rootComponents>
    <rootComponent processed="false" />
</rootComponents>
<dependencies>
    <dependency processed="false" />
</dependencies>

我在互联网上找到的所有内容都指出了一个属性问题(不匹配类型,......)但在我的情况下,这是同一个组织,没有从开发转移到prod或类似的东西......

我们正在使用CRM 2015,但我们已经在2011年遇到了这个问题。

有人为此解决了问题吗?我们不想在导入解决方案之前每次都编辑customization.XML ......

这是数据库字段

[OwnerId] [uniqueidentifier] NOT NULL CONSTRAINT [DF_AccountBase_OwnerId]  DEFAULT ('00000000-0000-0000-0000-000000000000')

感谢

托拜厄斯

3 个答案:

答案 0 :(得分:0)

OwnerId的数据库字段看起来很好。从目标组织中删除具有通用名称的所有自定义字段,然后再次尝试导入。例如,如果您在两者上都有new_LastEmailDate,或者在解决方案中执行与自定义字段相同的任何自定义字段,请将其从目标中删除。您的一个自定义字段被识别为现有字段的新增内容,可能是由于大小写。如果您是从新解决方案中编写的,则无论如何都不需要它在目的地中,并且将替换非冲突的副本。

答案 1 :(得分:0)

当我尝试重新安装已使用以前版本的CRM脱机的CRM 2016 Outlook时,会发生这种情况。卸载与CRM和SQL Server相关的项目,清理注册表,删除与安装相关的所有文件夹和文件。我认为值得一提的是,这些安装与其他PC上的CRM环境相同。

答案 2 :(得分:0)

您看到的错误非常通用,但事实上您知道导致问题的属性会使事情变得更加容易。通常可以通过直接更改数据库来修复此类问题来修复损坏的元数据(不支持!),但这需要SQL开发人员对CRM元数据表的工作方式有相当的了解。如果你有这样的人我可以提供额外的指导,否则你应该与微软创建一个案例。