CRM 2013 通过自定义工作流程获取 CRM URL

CRM 2013 Get CRM URL via Custom Workflow

我需要通过自定义工作流程获取 CRM URL,以便在下一步发送电子邮件时使用。这样做的原因是为了向用户区分这封电子邮件来自哪个服务器 (UAT/Live)。

我一直在尝试按照本网站的建议使用 HTTPContext 路由 https://social.microsoft.com/Forums/en-US/31ff567d-65ea-4385-a764-68a2121ae8c0/ms-crm-2011-get-path-of-crm-server-url-in-plugin?forum=crmdevelopment 但是我得到的结果是无用的,因为我只收到一个“/”。

有谁知道从这一点开始该做什么或为什么这可能不起作用?

如果不创建与 CRM 发现服务的连接,这将无法以受支持的方式完成,这需要您提供凭据。工作流中可用的组织服务没有发现组织的方法 URL。

您有两个选择:

1) 使用 CodeActivity.

上的 InputParameter 代码属性将其作为参数传递给工作流

2) 创建(如果您还没有的话)一个配置实体来存储 URL 并在您的代码中检索它。

如果您真的不需要 URL(即您没有创建 link),那么您可以查询 Organization 实体以获取 Name 属性。这将为您提供组织的名称 - 这将是 URL 中唯一独特的部分。这将允许您向用户指示电子邮件是来自 UAT 还是 Prod。

我最终想出了一个解决方案,使用 environment.machinename 来获取服务器名称。从那里我可以确定工作流 运行 通过哪个生产服务器并将包含 dev、uat 或 live 的字符串传递到输出以在我的 activity 电子邮件中使用。

请注意,我必须在没有处于沙盒模式下的情况下注册工作流。希望这对以后的人有所帮助。

这是一个非常古老的问题,但我在尝试做类似的事情时遇到了它。

我发现 v9 中引入了一个 RetrieveCurrentOrganizationRequest 请求。这将适用于沙盒插件。

您可以像这样使用它来检索端点 url

var currentOrg = base.OrgService.Execute(
  new RetrieveCurrentOrganizationRequest()
) as RetrieveCurrentOrganizationResponse;

var url = currentOrg.Detail.Endpoints
  .Where(e => e.Key == EndpointType.WebApplication)
  .FirstOrDefault()
  .Value;

这里有更多信息:RetrieveCurrentOrganizationRequest

我在使用的时候发现Endpoints集合中有3个可用的网址:

  1. Web 应用程序
  2. 组织数据服务
  3. 组织服务

与 CRM 2013(当时 OP 使用)相关,还有 RetrieveOrganizationRequest class 与上述相同;但是你必须指定组织(和一些其他信息)