标签: dynamics-crm

使用Java连接到Microsoft Dynamics CRM内部部署Web服务?

是否有任何在线资源显示使用Java编写的客户端访问Microsoft CRM内部部署Web服务的基本步骤?

我应该使用哪个Web服务工具包?

我尝试使用JAXB,但WSDL元素命名中存在冲突,需要进行类自定义.如果我找到正确的绑定修复程序,我会在此处发布.

java web-services dynamics-crm

9
推荐指数
1
解决办法
2万
查看次数

从Ribbon JScript CRM Online 2011调用C#代码

我需要在实体上单击功能区按钮执行一些代码,该实体可以从CRM Online 2011更新一些相关数据.我宁愿不必在JScript中编写所有这些逻辑.有没有办法从JScript调用C#代码?我查看了Microsoft在功能区中使用的JScript文件,它看起来像这样:

Mscrm.Campaign.copyCampaign = function (campaignId, saveAsTemplate) {
    var $v_0 = new RemoteCommand("MarketingAutomation", "CopyCampaign", null);
    $v_0.SetParameter("campaignId", campaignId);
    $v_0.SetParameter("saveAsTemplate", saveAsTemplate.toString());
    var $v_1 = $v_0.Execute(),
        $v_2 = $v_1.ReturnValue;
    openObj(Mscrm.EntityTypeCode.Campaign, $v_2, null, null, Mscrm.NavigationMode.NavigationModeInline, null);
    Mscrm.Utilities.refreshParentGrid(Mscrm.EntityTypeCode.Campaign, campaignId)
};
Run Code Online (Sandbox Code Playgroud)

我看到正在放置一个RemoteCommand调用,我假设它正在回到一些Web服务功能.我希望能做到这样的事情.我可以添加自己的Web服务功能吗?

我能够从JScript调用为实体发送"分配"消息,就像测试一样.这可能适用于插件,但为执行事件发送消息似乎很奇怪,实际上并不只是为了运行一些C#代码("分配","更新"等)而且我不喜欢看到创建自己的消息的方法.

javascript c# dynamics-crm dynamics-crm-2011 dynamics-crm-online

9
推荐指数
1
解决办法
6703
查看次数

使用DynamicsCRM中的插件获取EntityReference的GUID

这个问题与我现在为Dynamics CRM 2011创建的插件有关.

我有一个有5个属性的实体.其中1个属性是另一个实体的查找.

我想用插件做的是修改Lookup实体的Guid.简单吧?

但不,它给了我麻烦,我已经尝试了几十种方法使用EntityReference来获取guid但不能.我试过创建一个失败的preImage.

这是CODE的片段.

Entity entity = (Entity)context.InputParameters["Target"];

   if (entity.LogicalName == "new_producttaxrate")
  {
   if (entity.Attributes.Contains("new_product"))
     {

     EntityReference ownerLookup = (EntityReference)entity.Attributes["new_product"];
      productName = ownerLookup.Name;
      Guid  productId = ownerLookup.Id;

    }
  }
Run Code Online (Sandbox Code Playgroud)

也想出了这个

     if (entity.Attributes.Contains("new_producttaxrateid"))
              {
                  Guid myGuid = (Guid)entity.Attributes["new_producttaxrateid"];
                  EntityReference ownerLookup = new EntityReference("new_product", myGuid);
                   pid = ownerLookup.Id;
               }
Run Code Online (Sandbox Code Playgroud)

我一直收到这个错误

    Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: Condition for attribute 'new_producttaxrate.new_product': expected argument(s) of type 'System.Guid' but received 'System.DBNull'.Detail: 
<OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/xrm/2011/Contracts">
  <ErrorCode>-2147220989</ErrorCode>
  <ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic">
    <KeyValuePairOfstringanyType>
      <d2p1:key>CallStack</d2p1:key>
      <d2p1:value xmlns:d4p1="http://www.w3.org/2001/XMLSchema" …
Run Code Online (Sandbox Code Playgroud)

plugins entity dynamics-crm entityreference

9
推荐指数
1
解决办法
4万
查看次数

具有名称account的代理类型已由另一个程序集定义

  • 我们在我们的内部部署crm 2011系统中运行了2个组织.
  • 我们为两个组织生成了早期绑定类.
  • 我们的一个插件是在停用帐户时抛出"具有名称帐户的代理类型已由另一个程序集定义"错误.
  • 该插件仅引用早期绑定的dll之一.

如何让CRM系统尊重这些引用的命名空间.
我尝试了一些从谷歌出现的项目,但没有一项正在运作.

既然你可以使用2个香草组织来重现这个问题,我会想象一下我们可以做的代码层之外的东西,而不必返回并为2个组织重构一堆代码.

谢谢,
乔恩

.net c# asp.net dynamics-crm dynamics-crm-2011

9
推荐指数
2
解决办法
5064
查看次数

如何使CRMSvcUtil.exe生成无重复,无错误的早期绑定选项集?

我使用Erik Pool的实现ICodeWriterFilterService和Manny Grewal的GenerateOption函数作为模型来过滤掉CRMSvcUtil生成的文件中不需要的实体.虽然Erik建议返回trueGenerateOptionSet方法enums集生成的方法,但这样做会复制任何特定实体使用的任何全局选项集(如该帖子的其中一条评论中所述).

为了解决这个问题,我检查是否已经生成了选项集,如果是,我将返回默认选项(大概false是大多数情况下),如下所示.

//list of generated option sets, instantiated in the constructor
private List<string> GeneratedOptionSets;

public bool GenerateOptionSet
    (OptionSetMetadataBase optionSetMetadata, IServiceProvider services)
{
    if (!GeneratedOptionSets.Contains(optionSetMetadata.Name))
    {
        GeneratedOptionSets.Add(optionSetMetadata.Name);
        return true;
    }

    return _defaultService.GenerateOptionSet(optionSetMetadata, services);
}
Run Code Online (Sandbox Code Playgroud)

但是当在我的CRM项目中合并生成的文件时,编译错误

Cannot convert type 'Microsoft.Xrm.Sdk.OptionSetValue' to 'int'
Run Code Online (Sandbox Code Playgroud)

总是被看起来像的每一行代码抛出

this.SetAttributeValue
    ("address1_shippingmethodcode", new Microsoft.Xrm.Sdk.OptionSetValue(((int)(value))));
Run Code Online (Sandbox Code Playgroud)

.

作为一种变通方法,我用一个单独的项目中,我过滤我需要的实体运行CRMSvcUtil的论据埃里克表明,更换代码的麻烦的部分(int)(value)(这里value是一个OptionSetValue含)value.Value时生成的文件后,再重新保存文件,并所有问题都消失了.

我的问题是:我是否需要做一些不同的事情来修复这个编译错误与默认CRMSvcUtil生成的文件,而不做像修改生成的文件这样的hackish?

enums dynamics-crm dynamics-crm-2011

9
推荐指数
1
解决办法
3969
查看次数

注册插件和/或工作流程时出错.插件程序集不包含所需类型或程序集内容无法更新

我使用CRM 2011 Developer Toolkit在Visual Studio 2010中实现了一个自定义工作流.它与系统生成的命名空间一起工作正常.但是,当我更改项目的命名空间时,它会抛出错误"注册插件和/或工作流程时出错.插件程序集不包含所需的类型或程序集内容无法更新." 在部署时.我已经更改了.crmregister文件,项目属性和源代码中的命名空间.然后是这里的问题.

c# dynamics-crm c#-4.0 dynamics-crm-2011

9
推荐指数
3
解决办法
3万
查看次数

WSImport为多个Dynamics CRM 4.0 WSDL生成冲突的XMLType

我目前正在使用Dynamics CRM 4.0 Web服务.我做的第一件事是Java/JAX-WS基于webservice的WSDL为wsimport生成正确的类.在生成类时,我遇到了一些错误:

[ERROR] A class/interface with the same name
"com.microsoft.schemas.crm._2007.webservices.RetrieveResponse" is already in use. Use a class customization to resolve this conflict.
  line 979 of file://src/main/webapp/WEB-INF/classes/META-INF/wsdl/CrmServiceWsdl.wsdl

[ERROR] (Relevant to above error) another "RetrieveResponse" is generated from here.
  line 12274 of file://src/main/webapp/WEB-INF/classes/META-INF/wsdl/CrmServiceWsdl.wsdl
Run Code Online (Sandbox Code Playgroud)

979行告诉我们:

<s:element name="RetrieveResponse">
    <s:complexType>
      <s:sequence>
        <s:element name="RetrieveResult" type="s3:BusinessEntity" />
      </s:sequence>
    </s:complexType>
  </s:element>
Run Code Online (Sandbox Code Playgroud)

第12274行给了我们:

<s:complexType name="RetrieveResponse">
    <s:complexContent mixed="false">
      <s:extension base="tns:Response">
        <s:sequence>
          <s:element ref="s3:BusinessEntity" />
        </s:sequence>
      </s:extension>
    </s:complexContent>
  </s:complexType>
Run Code Online (Sandbox Code Playgroud)

两个部分都在同一名称空间中.两者都将生成为RetrieveResponse.class,因此它们会发生碰撞.我找到了这个问题的解决方案,即JAX-B绑定xml文件:

<bindings node="//xsd:complexType[@name='RetrieveResponse']">
  <jaxb:class name="RetrieveResponseType"/>
</bindings>
Run Code Online (Sandbox Code Playgroud)

这有效(不确定这是否是正确的方法..?)..

所以在此之后,我成功地创建了一些成功的Web服务调用,这很棒! …

jax-ws jaxb dynamics-crm wsimport dynamics-crm-4

9
推荐指数
1
解决办法
2127
查看次数

名称空间"<global namespace>"已包含"Workflow"的定义

我正在开发自定义工作流程活动.我用代码生成工具(CrmSvcUtil.exe)创建了自己的helper.cs(Early Bound Entity Classes)

当我尝试编译代码时,它返回以下错误:

命名空间''已包含'Workflow'的定义

从Helper.cs文件.

有谁知道这意味着什么?

c# workflow-activity dynamic-programming dynamics-crm dynamics-crm-2011

9
推荐指数
2
解决办法
2万
查看次数

MS Dynamics CRM中的依赖注入

我目前正在开始使用插件扩展Microsoft Dynamics CRM.

是否可以在这些插件中添加依赖注入(用于测试,松耦合等目的)?我在哪里可以注册我的IoC容器,以便它用于所有相同类型的插件?

c# dynamics-crm dynamics-crm-2011

9
推荐指数
2
解决办法
2309
查看次数

CRM 2011到CRM 2016迁移

我计划将我的CRM(内部)2011升级到CRM 2016(内部部署).现在我正在寻找迁移数据的最佳方法.顺便说一下,有很多自定义数据(实体,字段,WF).Microsoft建议逐步升级2011-> 2013-> 2015-> 2016(因为db strucutre显着改变,正如他们所说),但这对我来说不是最好的方式.我想首先进行干净安装,然后将数据从2011年移动到2016年.我所遇到的解决方案是调查新结构,然后编写自定义SQL脚本,这将完成工作.有没有开箱即用的方式?

另一个问题是关于CRM版本.Microsoft提供Dynamics CRM 365(内部部署)和Dynamics CRM 2016(内部部署).有什么不同?我可以发现,当2016年是一次性付款时,365就像是订阅许可证?

TL; DR:

  1. 从2011年升级到2016年CRM的最佳方式,最佳实践.
  2. 将数据从2011年迁移到清洁2016 CRM的最佳方式.
  3. CRM 2016和CRM 365之间的区别(内部,两者)

非常感谢您即将到来的答案.

dynamics-crm dynamics-crm-2011 dynamics-crm-2016

9
推荐指数
3
解决办法
4994
查看次数