我正在使用WatiN(.Net中的Web应用程序测试)在Dynamics CRM 4.0网站上进行集成测试.CRM使用大量弹出窗口 - 例如,单击列表中的联系人会打开一个带有联系人详细信息的新浏览器窗口.
我想测试一下:
所以我需要抓住弹出的窗口.怎么样?
谢谢.
我已经避免使用fetchxml,因为我一直不确定在调用crmService.Fetch(fetchXml)之后处理结果数据的最佳方法.在几种情况下,我使用带有LINQ的XDocument从此数据结构中检索数据,例如:
XDocument resultset = XDocument.Parse(_service.Fetch(fetchXml));
if (resultset.Root == null || !resultset.Root.Elements("result").Any())
{
return;
}
foreach (var displayItem in resultset.Root.Elements("result").Select(item => item.Element(displayAttributeName)).Distinct())
{
if (displayItem!= null && displayItem.Value != null)
{
dropDownList.Items.Add(displayItem.Value);
}
}
Run Code Online (Sandbox Code Playgroud)
处理fetchxml结果数据的最佳方法是什么,以便可以轻松使用.诸如将这些记录传递到ASP.NET数据网格之类的应用程序将非常有用.
我正在使用FetchXml来查询CRM 4.0.我们有一个特殊情况需要在CRM entites之间进行复合连接.所述FetchXml模式表示的多个链路实体元件是允许的,并且它也表明,多个过滤器/条件的元素可以被添加到链路的实体.我面临的问题是条件元素的value属性似乎不允许实体/列名称.它期望明确声明的值.
例如,FetchXml允许您指定:
<link-entity name='myentity' from='column1' to='column2'/>
Run Code Online (Sandbox Code Playgroud)
...这与T-SQL相当:
JOIN myentity on column1 = column2
Run Code Online (Sandbox Code Playgroud)
它可以让你指定:
<link-entity name='myentity' from='column1' to='column2'>
<filter type='and'>
<condition attribute='column3' operator='eq' value='myvalue' />
</filter>
</link>
Run Code Online (Sandbox Code Playgroud)
...这是T-SQL的等价物:
JOIN myentity on column1 = column2 AND column3 = 'myvalue'
Run Code Online (Sandbox Code Playgroud)
但是,FetchXml不会出现以下内容:
JOIN myentity on column1 = column2 AND column3 = column4
Run Code Online (Sandbox Code Playgroud)
注意区别.FetchXml提供了连接中的条件,但它似乎提供了复合连接,即跨多个列的连接.
有没有人在网络空间中能够使用CRM 4.0中的FetchXml执行复合连接?谢谢!
更多信息:
我正在寻找一个使用FetchXml来完成此任务的答案 - 而不是SQL或QueryExpression语法.上面的SQL只是为了解释这个概念.
我是crm 2011的新手.我找到了有关如何在功能区中添加新按钮的文档.以及如何分组按钮.但我需要功能区中的下拉菜单按钮.我怎样才能做到这一点?我没有找到任何关于此的信息.
谢谢!
我在使用Dynamics CRM在线获取要导入的记录集时出现问题.我现在已将问题减少到一个字段.
我有一个名为"描述"的字段,这是一个文本字段,正在填补作品.当我尝试在没有该字段的情况下在线导入CRM时,导入就可以了.但是在包含该字段的情况下,我收到此消息:

我原本以为在这个领域的结果中有一个角色为了导入而抛弃了东西.所以我经历了为期一天的很多工作REPLACES,RTRIM(ing)和CAST.没有任何效果.
然后我想,"如果它不是一个奇怪的角色怎么办?" 并做了LEFT一个RTRIM函数,让我只有一个字符来测试导入.这是我导入时的最终陈述:
RTRIM(LEFT(CAST(lntmu11.matter.memo AS varchar(1)), 1)) AS Description
Run Code Online (Sandbox Code Playgroud)
所以现在,我只为此专栏返回一个字符.我仔细检查了Excel中的输出,并验证没有标点符号或奇怪的数据.我仍然得到错误.
我从SQL导出,原始字段是TEXT数据类型字段.
导入时有人遇到类似的问题吗?我的另一个想法是,当我在导出中包含"描述"字段时,我超过了CRM中的最大个人记录大小.(因为某些记录将包含500个字符或更多).但是现在我只输出1个字符,这不是问题.
有什么想法吗?
有谁能在这里暗示我做错了什么?
我使用此示例创建了自定义工作流活动创建自定义工作流活动.但这并没有在插件注册工具中显示为插件/活动类型.见下图:

我的活动示例代码如下:
代码更新
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Activities;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Workflow;
namespace TestCustomWorkflowActivity
{
public class SampleCustomActivity : CodeActivity
{
protected override void Execute(CodeActivityContext executionContext)
{
//Create the tracing service
ITracingService tracingService = executionContext.GetExtension<ITracingService>();
//Create the context
IWorkflowContext context = executionContext.GetExtension<IWorkflowContext>();
IOrganizationServiceFactory serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
}
}
}
Run Code Online (Sandbox Code Playgroud)
Platform
Dynamics CRM 2013 On Premises v 6.1.2.112(已安装SP1 UR2)
Dynamics CRM 2015 Online
.NET Framework
4.0 版
c# dynamics-crm workflow-foundation workflow-foundation-4 dynamics-crm-online
我们从CRM导出一个包含所有自定义的解决方案,并将其解压缩到单个文件中(使用SolutionPackager.exe)存储在源代码管理中.在我们添加一些计算字段之前,这一直很有效.
使用SolutionPackager.exe重新打包并导入时,我们会收到一条缺少FormulaDefinition文件的错误.果然,Formulas我们的源代码管理中没有任何文件夹.
如果我打开我们导出的解决方案的zip文件,我会看到Formulas文件夹,但神秘地解压缩该解决方案会使Formulas消失.我没有发现任何有用的信息,有没有人以前遇到过这个问题?
我正在使用Microsoft aad:adal4j来处理来自Mobile的动态crm登录.实施后我得到以下例外.
我究竟做错了什么?
错误
java.lang.NoSuchMethodError: No static method encodeBase64URLSafeString([B)Ljava/lang/String; in class Lorg/apache/commons/codec/binary/Base64; or its super classes (declaration of 'org.apache.commons.codec.binary.Base64' appears in /system/framework/org.apache.http.legacy.boot.jar)
java.util.concurrent.ExecutionException: java.lang.NoSuchMethodError: No static method encodeBase64URLSafeString([B)Ljava/lang/String; in class Lorg/apache/commons/codec/binary/Base64; or its super classes (declaration of 'org.apache.commons.codec.binary.Base64' appears in /system/framework/org.apache.http.legacy.boot.jar)
at java.util.concurrent.FutureTask.report(FutureTask.java:94)
at java.util.concurrent.FutureTask.get(FutureTask.java:164)
at com.sampleadal.MainActivity.onCreate(MainActivity.java:33)
at android.app.Activity.performCreate(Activity.java:6237)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NoSuchMethodError: No static method encodeBase64URLSafeString([B)Ljava/lang/String; in …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Dynamics CRM Online 2016和BizTalk 2013 R2实现服务器到服务器的集成.我使用WebHttpBinding来调用CRM Web API,这需要一个作为http头提供的持有者令牌:
Authorization: Bearer [base64string]
我编写了一个客户端消息检查器,它使用ADAL调用Azure AD来获取访问令牌.这是通过客户端断言证书保护的,该证书已分配给AD租户中的已注册应用程序:
var token = context.AcquireTokenAsync(this.ResourceUri, assertionCert).Result;
ResourceUri 是 https://[myorganisation].crm4.dynamics.comassertionCert 是使用应用程序注册应用程序ID和机器证书存储区中的x509证书创建的ClientAssertionCertificate,该证书存储区作为KeyCredential注册到应用程序这"有用",因为它返回一个令牌,我可以解码这个令牌来检查声明 - 其中有相当数量,我无法确定这是否是CRM要求的一组声明.
AD应用程序注册配置了对CRM实例的委派权限.
我已将CRM本地用户中的应用程序ID设置为应用程序注册的应用程序ID.
在调用webAPI并提供此令牌时,CRM会响应401 unauthorized.
我在powershell脚本和PostMan中重复了相同的过程,所有这些过程似乎都表现出相同的行为.
我还应该做些什么来让CRM接受我的访问令牌?
编辑#1:尝试硬编码权限URI https://login.windows.net/[my-tenant-id]/oauth2/token而不是动态获取权限的内容AuthenticationParameters- 这是相同的值,除了以/ authorization而不是/ token结尾.这是零差异.
编辑#2:我正在使用的管理员向我指出,我期望使用的应用程序用户没有分配用户角色 - 这已被修改为具有允许API访问的角色,但这也没有区别.
编辑#3:oauth2AllowImplicitFlow在应用注册的清单中设置为true.这没有任何区别.
编辑#4:通过创建新的应用注册取得了一些进展,这次是作为Native应用而不是Web应用.我设法使用客户端密钥获取令牌,这被接受了 - 但是在将证书分配给应用程序并像以前一样呈现ClientAssertionCertificate时,我从权威机构获得响应:
Error validating credentials. AADSTS50012: Client is public so a client_assertion' should not be presented.
为什么?"客户公开"是什么意思?只是工作!
如何在TypeScript中为可测试的Dynamics CRM表单编写类?
通过testable,我的意思是一个非静态类,可以实例化并传递一个模拟Xrm对象.
我目前的方法是这样的,但它有局限性(我解释):
export class Contact {
Xrm: Xrm.XrmStatic;
constructor(xrm?: Xrm.XrmStatic) {
this.Xrm = xrm;
}
onLoad(): void {
if (this.Xrm) { Xrm = this.Xrm; }
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
首先,Contact导出类以便可以通过CRM表单引用.CRM在调用它的函数之前无法实例化对象,因此要调用这些方法,我在CRM表单设计器中使用Contact.prototype.onLoad.
我的测试看起来像这样:
beforeEach(function () {
this.XrmMock = new XrmStaticMock();
this.contact = new Contact(this.XrmMock);
this.contact.onLoad();
}
it('does stuff', function () {
// ...
}
Run Code Online (Sandbox Code Playgroud)
测试能够实例化Contact并传递XrmMock给构造函数.随后onLoad()调用时,它的计算结果if (this.Xrm)为true,并使用XrmMock.相反,当Contact.prototype.onLoad()从CRM内部调用时,它(this.Xrm)是假的,因为Contact从未实例化过.因此,对Xrmwithin的任何引用都onLoad()使用默认Xrm命名空间(这是我们想要的).我们想要这个,因为当打开CRM表单时, …