天道酬勤,学无止境

Crm 2011 Outlook 客户端 - 关于强制设置(Crm 2011 outlook client - Set regarding mandatory)

问题

我们的客户正在使用 Microsoft CRM 2011 Outlook 客户端,他们有独特的业务需求。 他们希望对所有使用 Outlook 发送电子邮件的员工强制执行“设置相关”(很奇怪吧?)。 如果用户在发送电子邮件时忘记设置,outlook 应该显示一条通知消息并且不应该让用户发送电子邮件。

我找不到任何开箱即用的功能,所以我决定编写一个 Outlook 插件。 有没有办法在 Outlook 插件 ItemSend 事件中知道邮件项目具有为相关字段设置的值? 我可以获得包括 CRM:xxxxx 在内的电子邮件主题,但由于电子邮件尚未在 CRM 中创建,我不知道如何提取相关数据。

回答1

有关跟踪的信息存储在邮件的 MAPI 属性中。 请参阅随附的屏幕截图。 它们应该可以在 ItemSend 事件中访问。

您可以像这样获得此信息(来自@Ahmeds 评论)

dynamic regardingId = mailItem.PropertyAccessor.GetProperty("schemas.microsoft.com/mapi/string/‌​;{00020329-0000-0000-C000-000000000046}/crmRegardingId/0x0000001F");

在此处输入图像描述

回答2

我在 VS2012 和 Outlook 2010 中使用了以下代码来获取相关的 GUID。

dynamic id = mailItem.UserProperties["crmRegardingId"]; 
if (id != null) Console.Write(id.Value); 
else Console.Write("Error");

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Dynamics CRM 2011 Outlook 客户端和浏览器呈现(Dynamics CRM 2011 Outlook client and browser rendering)
    问题 因此,借助 Dynamics CRM 2011,您可以使用浏览器客户端或 Outlook 客户端。 它们看起来非常相似,这让我认为 Outlook 客户端必须使用 Internet Explorer(或其组件)来呈现大部分页面。 我一直试图找出是否是这种情况,但没有太大成功。 所以我的问题是: Dynamics CRM 2011 的 Outlook 客户端是否以某种方式将页面呈现外包给 Internet Explorer? 如果是这样,它是否受 PC 上安装的 Internet Explorer 版本(7、8、9 等)的影响,或者它是否使用 Outlook 内置的单独 Trident 渲染引擎(因此,如果您升级它会保持不变PC 上的 IE)。 编辑:如果有什么不同,我特别关注 Outlook 2007 回答1 Outlook 中的整页表单由 IE 呈现。 所有当前版本的 CRM 都使用 IE7 或 IE8 兼容模式下的 IE。 UR11 包含大量针对 IE10 兼容性问题的修复。 回答2 我知道这是个老问题,但如果有人想知道 - 这是 Outlook 2010 中“window.navigator.userAgent”返回的消息: Mozilla/4.0(兼容;MSIE 7.0;Windows NT 6.1;WOW64;Trident/6.0;SLCC2;.NET CLR 2
  • Dynamics CRM 2011 插件只能在 Outlook 中使用吗?(Dynamics CRM 2011 plugin in outlook only?)
    问题 我们需要限制一些从 Outlook 自动执行的删除操作到 CRM 2011,同时我们等待第 3 方加载项中的错误修复。 是否可以在 Dynamics CRM 2011 内部部署一个插件,该插件仅针对 Outlook 客户端(离线未使用)执行,或者如果插件是从 Outlook 触发的,则检查执行? 在 CRM 4.0 中,曾经有一个 CallerOrigin 属性至少提供了一些关于此的信息,但该属性现在似乎仅在 CRM 2011 模型中是内部的。 回答1 我通过反射访问了CallerOrigin (它仍然存在,但未在 SDK 库中公开)。 下面的代码是我的代码的简短版本,没有任何验证或空检查(即不是生产代码),只是为了在几行中展示它是如何工作的: object callerOrigin = context.GetType().GetProperty("CallerOrigin").GetValue(context, null); return callerorigin.GetType().Name; // will return "WebServiceApiOrigin" if called from outlook or web services 回答2 在编写插件以在 Outlook 中脱机运行时,您应该注意 IExecutionContext 上的两个属性:
  • CRM 2011 Outlook 客户端中的随机 JavaScript 错误(Random JavaScript Errors in CRM 2011 Outlook Client)
    问题 我们收到一些仅在 Outlook 客户端中发生的 JavaScript 错误。 它们是零星的,很难繁殖。 它们往往来自订单表。 例子包括: “无法从释放的脚本中执行代码......”来自订单上的地址查找 “this.$B_1' is null or not an object”来自“_static/_controls/ribbon/ribbon.js”(试图运行报告) 有没有人见过这些问题或有很好的方法来排除故障? 回答1 这与您的 JavaScript 有关。 我主要在升级中看到了这一点。 不幸的是,故障排除很痛苦。 如果您正在使用 setTimout,请先查看该代码。
  • Crm 2011 outlook client - Set regarding mandatory
    Our client is using Microsoft CRM 2011 outlook client and they have a unique business need. They want to make the "Set Regarding" mandatory for all of their employees using outlook to send emails (Weird huh?). If a user while sending the email forget to set regarding, outlook should display a notification message and shouldn't let the user send the email. I have not been able to find any out of the box feature for this so I decided to write an outlook addin. Is there a way to know in outlook addin ItemSend event that the mail item has the value set for regarding field? I can get the subject of
  • Dynamics CRM 2011 Outlook client and browser rendering
    So, with Dynamics CRM 2011 you can use the Browser Client or the Outlook client. They look very similar, which makes me think the Outlook Client must be using Internet Explorer (or components thereof) to render most of the pages. I've been trying to find out if that is the case, without much success. So my question is: Does the Outlook Client for Dynamics CRM 2011 outsource the rendering of pages to Internet Explorer in some way? If so, is it affected by the version of Internet Explorer that is installed on the PC (7,8,9 etc), or does it use a separate Trident render engine built into Outlook
  • Dynamics CRM 2011 plugin in outlook only?
    We need to restrict some delete operations done automatically from Outlook towards CRM 2011 while we wait for a bug fix in a 3rd party addin. Is it possible to have a plugin in Dynamics CRM 2011 on-premise that either only executes for the Outlook client (offline not in use) or that checks in the execution if the plugin is triggered from Outlook? In CRM 4.0 there used to be a CallerOrigin property that gave at least some information on this, but that property is now seemingly only internal in the CRM 2011 model.
  • Random JavaScript Errors in CRM 2011 Outlook Client
    We are receiving some JavaScript errors that are happening in the Outlook Client only. They are sporadic, and difficult to reproduce. They tend to come from the Order form. Examples include: "Can't execute code from a freed script..." from the Address Lookup on the Order "this.$B_1' is null or not an object" from "_static/_controls/ribbon/ribbon.js" (trying to run a report) Has anyone seen these issues or have a good way to troubleshoot?
  • 任何具有 API 访问权限和从 Salesforce 轻松迁移的 CRM 平台?(Any CRM platforms that have API access and an easy migration from Salesforce?)
    问题 在投入时间/金钱更新我们当前基于 Salesforce 的 CRM 之前,我们正在调查其他 CRM 平台。 这是我们正在寻找的: 轻松迁移 Salesforce 数据支持联系人开发人员和顾问社区自定义对象可定制的界面 API 访问(在我们的例子中,我们会将它用于控制内容交付的同步守护进程) 理想情况下:用于与该 API 交互的 Ruby 库,例如 ActiveSalesforce 是否有任何选项(除了 Salesforce)可以满足这些需求? 如果是这样,迁移是否值得,记住我们已经有部分基于 Salesforce 的解决方案? 回答1 简单的答案是 Microsoft Dynamics CRM。 当然,这个答案有点偏颇。 =) 以下是您的观点的原因- 轻松迁移 Salesforce 数据我可以谈谈数据迁移。 没有多少 CRM 解决方案具有完整的全面迁移,因为可扩展的 CRM 解决方案可能很混乱。Microsoft CRM 数据导入非常灵活,因为它为您提供了一个很好的模板,您可以使用来自 SalesForce 的信息填充该模板。 Microsoft CRM 实体可以通过界面轻松修改,因此如果您的 SF.com 数据与 Microsoft CRM 附带的现成结构不匹配,您只需点击一下即可扩展它。 使用新版本 (Dynamics CRM 2011),您可以在导入期间动态扩展实体 -
  • CRM 2011 Remove unwanted menu entry
    I want to remove the "New" option in a entry on the main menu. Its that little right arrow that allows the user to see this menu at all, I'd be okay with completely removing that. Here is what the element looks like in my sitemap: <SubArea Id="nav_cases" Entity="incident" DescriptionResourceId="Cases_SubArea_Description" GetStartedPanePath="Cases_Web_User_Visor.html" GetStartedPanePathAdmin="Cases_Web_Admin_Visor.html" GetStartedPanePathOutlook="Cases_Outlook_User_Visor.html" GetStartedPanePathAdminOutlook="Cases_Outlook_Admin_Visor.html" /> And based on the sitemap documentation I don't think
  • 通过API将参数传递给CRM 2011工作流(Pass a parameter to a CRM 2011 Workflow via the API)
    问题 我有一个带有“提示和响应”对话框的工作流程。 我可以使用ExecuteWorkflowRequest从API运行工作流,但是如何为提示和响应输入提供值? 回答1 工作流不带参数。 对话框采用参数,这些参数通常是从其他对话框或查询传递的。 我唯一要做的就是将相关实体从父工作流程作为主要实体传递给子工作流程。 回答2 我将撤回先前的答案,并支持@Grigory。 从SDK看到此页面 注意由于对话过程的交互性质,因此无法使用Microsoft Dynamics CRM SDK运行对话。 对话框只能通过Microsoft Dynamics CRM Web应用程序运行,并且Microsoft Dynamics CRM for Microsoft Office Outlook(具有脱机访问功能)不支持该对话框。 我不知道答案,但我相当有信心: 可能的不支持(因为未在SDK中记录) 如果我真的需要找出答案,那么我将编写一个插件来探索在内部触发工作流时会发生什么(这是假定通过插件管道触发了此类消息的假设-不一定是正确的假设)。 我将在Execute消息的所有阶段(假定我)都注册此插件,然后使用调试日志记录或交互式调试会话(附加到Async服务)来检查ExecuteWorkflowRequest的InputParameters
  • CRM 2011 SDK 交易(CRM 2011 SDK transaction)
    问题 如何使用 crm 2011 sdk 和 XrmServiceContext 创建事务? 在下一个示例中,“new_brand”是一些自定义实体。 我想创建三个品牌。 第三个有错误的 OwnerID 指导。 当我调用 SaveChanges() 方法时,创建了两个品牌并且我遇到了异常。 如何回滚创建前两个品牌? 是否可以不使用插件和工作流程? using (var context = new XrmServiceContext(connection)) { SystemUser owner = context.SystemUserSet.FirstOrDefault(s => s.Id == new Guid("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")); // create 3 brands new_brand b1 = new new_brand(); b1.new_brandidentification = 200; b1.new_name = "BRAND 200"; b1.OwnerId = owner.ToEntityReference(); context.AddObject(b1); new_brand b2 = new new_brand(); b2.new_brandidentification = 300; b2.new
  • 适用于声明模式xRM的Apache CXF客户端(Microsoft Dynamics CRM 2011)?(Apache CXF client for claims-mode xRM (Microsoft Dynamics CRM 2011)?)
    问题 我正在尝试为CRM处于声明模式的Microsoft Dynamics CRM 2011(“ xRM”)Web服务(我理解为基于WCF 4)创建Apache CXF(2.7.5)客户端此Web服务指向STS(在我的情况下为AD FS 2.0)。 我的主要问题:是否有任何教程,建议,博客文章可以帮助我(说明如何发送声明,或者如何避免声明,而是使用Windows身份验证)? 以下是到目前为止我所做的描述。 我已经有同一个Web服务的工作代码,当CRM处于Windows身份验证模式时,该代码就可以工作。 该代码基于Groovy Tom's Blog上的“ CXF和MS CRM 2011”。 为了支持Claims模式,我还需要包含org.apache.cxf:cxf-rt-ws-mex,以便CRM可以解析xRM WSDL。 然后,我需要使CXF内置STS客户端使用SOAP 1.2: client.getRequestContext().put("ws-security.sts.client-soap12-binding", "true"); 以避免AD FS 2.0出现错误500。 (显然,AD FS 2.0期望使用SOAP 1.2来调用/ adfs / services / trust / mex端点,而CXF默认为SOAP 1.1。我不得不从AD FS的WCF跟踪中找到这一点
  • CRM 2011 在自定义选项设置值上执行 FetchXML 组(CRM 2011 Performing FetchXML group by on custom option set value)
    问题 我希望能够执行 FetchXML 请求,在对自定义选项集的字段进行分组时对值求和,但我没有得到预期的结果。 返回的所有值都是汇总值,而不是与其相关的相关自定义选项设置值,因此我不知道返回的值与什么相关。 这是看起来正确的 fetchXML 请求: <fetch distinct='false' mapping='logical' aggregate='true'> <entity name='opportunity'> <attribute name='estimatedvalue' alias='opportunity_sum' aggregate='sum' /> <attribute name='koo_opportunitytype' alias='koo_opportunitytype' groupby='true' /> </entity> </fetch> 返回的每个值只有 1 个属性……值。 如果我按客户 ID 分组,则返回的值将正确汇总,并且每个汇总值的参考都返回给相关客户,这正是我所期望的。 是否无法按自定义选项集值进行分组? 这似乎适用于标准系统选项设置值,例如状态代码。 回答1 我已经验证,只要数据是干净的,您的 fetch xml 就可以正常工作。 如果您所有的机会的koo_opportunitytype值都为空,则不会为它们返回属性。
  • 如何对 CRM 2011 进行身份验证?(How to Authenticate to CRM 2011?)
    问题 我想建立一个简单的网站,客户可以在其中下订单和查看产品。 此数据是我的 Microsoft Dynamics CRM 2011 环境。 此数据是特定于客户的,因此我需要有关登录用户的信息。用户凭据存储在 CRM 2011 中。使用这些凭据,用户可以登录到这个新的自定义网站。 他们不应该访问 crm 环境本身。 我应该如何为这个网站设置身份验证? 我可以在 crm 2011 中查询用户信息吗,我应该设置 ADFS 应用程序还是其他什么? 回答1 我们刚刚为我的一个客户实现了类似的功能。 我们有大约 5000 名用户需要能够查看和编辑 CRM 数据,但我们不想为完整的 CRM 用户许可付费,因为他们需要更新/查看的数据非常少。 所有用户都已在 Active Directory 中,因此我们为每个用户购买了员工自助服务客户端访问许可证 (ESS CAL) 许可证。 此类用户许可证无权访问 CRM UI,因此他们永远无法实际登录 CRM 本身。 我们在网站上使用了 AD 身份验证,应用程序池用户是 CRM 超级用户帐户。 在用户会话的初始加载时,我们从上下文中获取用户名,并在 CRM 中查找用户的 SystemUserId,然后使用模拟服务代理来仅访问和更新允许用户访问的数据。 它工作得很好。 回答2 一种方法是创建一组系统用户(可能,单个用户就足够了)
  • Unable to get property 'ClientVariables' of undefined or null reference in CRM 2013
    I have a task to upgrade the CRM 4.0 to CRM 2013 and CRM have too much customization. i have change the code and then upgrade to CRM 2011 then apply RU 16 on CRM 2011 then get the data base and import in the CRM 2013. Now in CRM 2013 i am facing the following error on the Sales Order. and form is not loading the data and showing the Error on Page. i have seen that this error is due to the Ribbon button Code. enter code here Microsoft Dynamics CRM Error Report Contents <CrmScriptErrorReport> <ReportVersion>1.0</ReportVersion> <ScriptErrorDetails> <Message>Unable to get property 'ClientVariables
  • 无法在 CRM 2013 中获取未定义或空引用的属性“ClientVariables”(Unable to get property 'ClientVariables' of undefined or null reference in CRM 2013)
    问题 我有一项将 CRM 4.0 升级到 CRM 2013 的任务,而 CRM 有太多的自定义。 我更改了代码,然后升级到 CRM 2011,然后在 CRM 2011 上应用 RU 16,然后获取数据库并导入 CRM 2013。现在在 CRM 2013 中,我在销售订单上遇到以下错误。 并且表单未加载数据并在页面上显示错误。 我已经看到这个错误是由于功能区按钮代码造成的。 enter code here Microsoft Dynamics CRM Error Report Contents <CrmScriptErrorReport> <ReportVersion>1.0</ReportVersion> <ScriptErrorDetails> <Message>Unable to get property 'ClientVariables' of undefined or null reference</Message> <Line>2</Line> <URL>/_common/JsProvider.ashx?ids=1959345455-451858892-1713948411-1279630416-1250882489-367493978-19173614-574022791-696891199-2007586035-1552783829&ver=-732227036<
  • 在生产环境中运行的 CRM Online 2011 集成测试(CRM Online 2011 Integration Testing running in Production environment)
    问题 我正在为 Dynamics CRM Online 2011 编写一些代码。 我希望在CRM Online 中运行一组集成测试并能够检查: 一些日志输出断言失败 在我本地机器上的测试运行器的控制下。 现在,我正在做: var passes = new List<string>(); var fails = new List<Tuple<string,Exception>>(); foreach(Action<StringWriter> testAction in EnumTests()) { var log = stringWriter(); try { testAction(log); passes.Add(log.ToString()); } catch(Exception e) { fails.Add(log.ToString(),e); } } throw new Exception( "PASSES: " + string.Join("======", passes.ToArray()) + "FAILS: " + string.Join("=======",fails.Select(f=>f.ToString()).ToArray()); 我通过连接到联系人创建的插件操作触发此代码: 上传插件创建联系人点击保存下载异常数据文件 必须有更好的方法
  • 在 csv 导入上更新实体(动态 crm 2011 在线)(Updating entities on csv import (dynamics crm 2011 online))
    问题 在线导入动态 2011 中的 csv 数据时,是否可以选择更新现有实体而不是创建新实体? 例如,我在潜在客户实体上有某些自定义字段(每个潜在客户都通过电子邮件唯一标识)。 在某些时候,潜在客户的属性会发生变化。 是否可以通过 csv 导入这个新值,同时保留其他现有的潜在客户属性? 谢谢。 回答1 您可以做的是让 Dynamics 为您提供数据的 xml 文件,您可以对其进行编辑和重新导入更改。 打开高级查找并找到要更改某些值的记录添加要编辑的适当列单击功能区中的“导出” 选中“使此数据可用于重新导入...”框,然后单击导出 现在,您可以在 xml 文件中自由编辑您的记录(Excel 可以很好地工作),您可以对其进行更新,然后通过“数据管理”>“导入”>“导入数据”作为标准导入。 回答2 就您所要求的本机支持而言,Spencerooni 的答案是正确的(编辑:并且就 IE9 可以带您而言)。 但是,要通过 CRM 客户端处理外部 CSV,您必须自己读取 CSV 并进行更新。 我可以想到一种方法来做到这一点: 在您的站点地图中创建一个专门用于从该第三方来源导入 CSV 的部分,或者如果您喜欢冒险,则专门用于所有通用 CSV 导入。 创建一个 Web 资源,提示用户在客户端计算机上选择一个文件。 要开始这一点,您可以参考 SO 答案“未来就在这里!”。 通过 HTML5
  • SaveChanges CRM 2011 插件上的未处理异常(Unhandled exception on SaveChanges CRM 2011 plugin)
    问题 我的 CRM 2011 插件有问题。 var QuoteProduct = crm.QuoteDetailSet.Where(c => c.QuoteDetailId == QPID).First(); double Tax = (double)( (QuoteProduct.BaseAmount - QuoteProduct.ManualDiscountAmount.GetValueOrDefault() - QuoteProduct.VolumeDiscountAmount.GetValueOrDefault()) / 20); QuoteProduct.Attributes["tax"] = Tax; crm.UpdateObject(QuoteProduct); crm.SaveChanges(); 错误发生在保存更改行上。 错误详情如下。 用户代码未处理 Microsoft.Xrm.Sdk.SaveChangesException Message=处理此请求时发生错误。 来源=Microsoft.Xrm.Sdk 堆栈跟踪: 在 Microsoft.Xrm.Sdk.Client.OrganizationServiceContext.SaveChanges(SaveChangesOptions 选项) 在 C:\Users\mycrm\Desktop\BMSD
  • MS Dynamics CRM 的公开现场与 IFD 部署(Exposed onsite vs IFD deployments for MS Dynamics CRM)
    问题 我第一次从事 MS Dynamics CRM 4.0 项目。 我们公司有大量的远程员工,甚至更多的远程顾问。 因此,有必要通过 Internet 提供 CRM 解决方案。 据我所知,我有三个选择: 让每个人都使用 VPN 访问 Intranet 站点(典型的现场部署)。 但是,我们发现 VPN 远非无故障并且会导致许多支持问题。 我们像躲避瘟疫一样避开它们。 使用 IFD 在 Internet 上公开 CRM。 我对此知之甚少,只是 URL 与现场 URL 不同,这可能会引起一些麻烦(见下文)。 通过将站点打开到 Internet 来公开 CRM 站点,使用 SSL 加密流量。 我们目前使用我们的 MS 共享点站点来执行此操作。 我不确定这会有多安全(这个问题的原因之一)。 出于几个原因,我想避免同时使用现场 Intranet 部署和 IFD。 解决方案的其中一个请求是使用电子邮件通知用户他们已被分配任务,并在电子邮件中包含任务的 URL。 为此原因。 如果同时使用这两种部署,那么我需要包含两个 URL,并且用户需要知道要使用哪个。 这导致第二个原因,解决方案的主要用户在办公室和远程之间分配时间。 因此,他们需要以两种不同的方式访问解决方案,并知道何时使用哪种方式。 坏的。 那么,这些方法的优点/缺点是什么? 还有其他选择吗? 在 Intranet 中使用 IFD