我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),欢迎关注我的微信公众号 MSFTDynamics365erLuoYong ,回复384或者20191215可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!

本文主要根据官方文档 Configure server-based authentication with Customer Engagement (on-premises) and SharePoint Online ,做了一些补充和说明,方便阅读者配置成功。

官方文档首先讲了 Permissions required ,可以看到需要一个具有System Administrator (中文版的话则是 系统管理员) 角色的Dynamics 365 Customer Engagement账号,我这里用的是 luoyong\crmadmin (或者说是 crmadmin@luoyong.me),还需要一个你要连接的SharePoint Online所在订阅的具有 Global Administrator 的账号,我这里用的是 admin@CRM558602.onmicrosoft.com 。还需要的工具就是要在Dynamics 365 Customer Engagement上安装 Microsoft Dynamics CRM Hybrid Connector 组件。这个组件是免费的,记得安装,安装时候的地区不要选China,选香港特别行政区或者其他地方。

还需要如下两个工具来辅助,请安装到Dynamics 365部署服务所在服务器:

Microsoft Online Services Sign-In Assistant for IT Professionals Beta

Azure Active Directory Module for Windows PowerShell (64-bit version)

开始第一个配置步骤,也就是官方配置手册中的 Prepare the certificate 步骤,到Dynamics 365部署服务所在服务器上执行如下的PowerShell命令 (我这里更改为了自己的命令):

$CertificateScriptWithCommand = ".\CertificateReconfiguration.ps1 -certificateFile c:\Personalcertfile.pfx -password yourpassword -updateCrm -certificateType S2STokenIssuer -serviceAccount luoyong\crmsvc -storeFindType FindBySubjectDistinguishedName"

Invoke-Expression -command $CertificateScriptWithCommand

你会发现执行报错,如下图:

怎么解决?需要切换到Dynamics 365 Customer Engagement的安装目录,例如使用 cd "C:\Program Files\Dynamics 365\Tools" 切换后就可以了:

然后以管理员身份打开PowerShell执行如下命令:

Import-Module MSOnline -force
Import-Module MSOnlineExt -force

然后执行如下命令连接到Office 365:

$msolcred = get-credential
connect-msolservice -credential $msolcred

然后再顺次执行如下命令:,当然c:\Personalcertfile.pfx 和 c:\Personalcertfile.cer 两个文件要存在,密码要正确。

$STSCertificate = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 -ArgumentList c:\Personalcertfile.pfx, F2HrCf3H
$PFXCertificateBin = $STSCertificate.GetRawCertData()
$Certificate = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$Certificate.Import(“c:\Personalcertfile.cer”)
$CERCertificateBin = $Certificate.GetRawCertData()
$CredentialValue = [System.Convert]::ToBase64String($CERCertificateBin)

下面代码中的 $RootDomain 的值请换成自己的。

$RootDomain = “CRM558602.onmicrosoft.com”
$CRMAppId = "00000007-0000-0000-c000-000000000000"
New-MsolServicePrincipalCredential -AppPrincipalId $CRMAppId -Type asymmetric -Usage Verify -Value $CredentialValue
$CRM = Get-MsolServicePrincipal -AppPrincipalId $CRMAppId
$ServicePrincipalName = $CRM.ServicePrincipalNames
$ServicePrincipalName.Remove("$CRMAppId/$RootDomain")
$ServicePrincipalName.Add("$CRMAppId/$RootDomain")
Set-MsolServicePrincipal -AppPrincipalId $CRMAppId -ServicePrincipalNames $ServicePrincipalName
Add-PSSnapin Microsoft.Crm.PowerShell
$setting = New-Object "Microsoft.Xrm.Sdk.Deployment.ConfigurationEntity"
$setting.LogicalName = "ServerSettings"
$setting.Attributes = New-Object "Microsoft.Xrm.Sdk.Deployment.AttributeCollection"
$attribute1 = New-Object "System.Collections.Generic.KeyValuePair[String, Object]" ("S2SDefaultAuthorizationServerPrincipalId", "00000001-0000-0000-c000-000000000000")
$setting.Attributes.Add($attribute1)
$attribute2 = New-Object "System.Collections.Generic.KeyValuePair[String, Object]" ("S2SDefaultAuthorizationServerMetadataUrl", "https://accounts.accesscontrol.windows.net/metadata/json/1")
$setting.Attributes.Add($attribute2)
Set-CrmAdvancedSetting -Entity $setting

剩下的就是Dynamics 365 Customer Engagement中的配置了,当然再配置之前现在SharePoint Online中新建一个站点,比如我这里是新建了 https://crm558602.sharepoint.com/sites/D365Demo 这个站点,通过如下PowerShell命令获取 tenant ID

$CRMContextId = (Get-MsolCompanyInformation).ObjectID
$CRMContextId

以具有系统管理员的角色登录到Dynamics 365 Customer Engagement,导航到 【设置】>【文档管理】,点击 启用基于服务器的 SharePoint 集成 ,对于 SharePoint 网站,选择联机,然后选择下一步。在“准备网站”阶段,输入以下信息。输入 SharePoint Online 网站集 URL,我使用的是 https://crm558602.sharepoint.com/sites/D365Demo ,输入租户 ID,我这里使用的是前面命令获取的 e44473fd-1587-4556-a3ce-1d1d6280b241 。如果配置的错误是 Failed to connect to SharePointSite 的话,根据我的文章 Dynamics 365 启用跟踪及读取跟踪文件工具 查看日志,若日志中说明是有类似下面的错误导致的:

Crm Exception: Message: At least 1 Claim must not be NULL, current claims are : smtp= , ErrorCode: -2147220970

请参考 Mehmet Ozdemir 的文章CRM 2016 On-Premise to SharePoint Online Gotcha’s ,简单说就是为用户配置一个Office 365邮箱,例如,我的主要电子邮件配置为 admin@CRM558602.onmicrosoft.com :

这是验证通过的截图:

这是配置完成的截图:

点击上图中的【文档管理设置向导】连接,我的SharePoint站点设置如下:

完成后我上传一个文档看看:

上传成功后点击 【打开位置】按钮

的确在SharePoint Online中可以看到这个文档,URL是 https://crm558602.sharepoint.com/sites/D365Demo/account/Forms/AllItems.aspx?RootFolder=%2Fsites%2FD365Demo%2Faccount%2FA%2D%20Datum%20%E5%85%AC%E5%8F%B8%20%28%E7%A4%BA%E4%BE%8B%29%2Fincident%2F%E6%B5%8B%E8%AF%95%E6%A1%88%E4%BE%8B%5F4F76365F5A1BEA11A865000D3A6F652B&FolderCTID=0x01200007D8B02046624842A9980305B2591CA9 。

配置基于服务器认证的Dynamics 365 Customer Engagement和SharePoint Online集成的更多相关文章

  1. 更改Dynamics 365 Customer Engagement本地部署的高级配置

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  2. 利用Azure虚拟机安装Dynamics 365 Customer Engagement之五:安装SQL Server

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  3. 利用Azure虚拟机安装Dynamics 365 Customer Engagement之二:创建域控虚拟机

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  4. 如何让用户登录Dynamics 365 Customer Engagement后自动登录到Unified Interface App?

    微软动态CRM专家罗勇 ,回复324或者20190422可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! Dynamics 365 Customer Engagement ...

  5. Dynamics 365 Customer Engagement安装FAQ

    微软动态CRM专家罗勇 ,回复310或者20190308可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 本文参考了包括但不限 ...

  6. Dynamics 365 Customer Engagement V9 活动源功能报错的解决方法

    微软动态CRM专家罗勇 ,回复300或者20190120可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 安装好Dynamic ...

  7. Dynamics 365 Customer Engagement的标准导入不支持并行导入了吗?

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  8. Dynamics 365 Customer Engagement V9.X新引入的自动编号属性介绍

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  9. 利用Azure虚拟机安装Dynamics 365 Customer Engagement之四:组织单位服务安装账号设置

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

随机推荐

  1. js-Date()对象,get/setFullYear(),getDay()编程练习

    啥也不说!看代码 主要注意:getday()方法中原理!!! <!DOCTYPE html> <html lang="en"> <head> & ...

  2. 为什么说 Java 中只有值传递?

    对于初学者来说,要想把这个问题回答正确,是比较难的.在第二天整理答案的时候,我发现我竟然无法通过简单的语言把这个事情描述的很容易理解,遗憾的是,我也没有在网上找到哪篇文章可以把这个事情讲解的通俗易懂. ...

  3. dubbo 发布 RPC 服务

    Dubbo 发布 RPC 服务 建立服务提供者项目 pom.xml <?xml version="1.0" encoding="UTF-8"?> & ...

  4. HDU1907 Jhon

    Little John is playing very funny game with his younger brother. There is one big box filled with M& ...

  5. Python爬虫爬取异步加载的数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:努力努力再努力 爬取qq音乐歌手数据接口数据 https://y.qq ...

  6. 【JS】368- 浅析JavaScript异步

    一直以来都知道 JavaScript是一门单线程语言,在笔试过程中不断的遇到一些输出结果的问题,考量的是对异步编程掌握情况.一般被问到异步的时候脑子里第一反应就是 Ajax, setTimseout. ...

  7. 【HttpClient】使用学习

    HttpClient使用学习 HttpClient Tutorial:http://hc.apache.org/httpcomponents-client-4.5.x/tutorial/html/in ...

  8. Linux sudo用户提权与日志审计

    一.格式说明及常用配置选项 格式: 用户或组 主机=授权可以使用哪个用户的权限 可以执行的命令 User_Alias 用户定义别名(别名可以是用户,用户组(用户组前面要加%))例:User_Alias ...

  9. Thread.Sleep线程休眠-小白向

    try { Thread.sleep(); } catch (InterruptedException e) { } 首先这段代码的作用是使当前进程沉睡2S,展现给用户的结果就是画面维持两秒,有个“正 ...

  10. Linux 实验 [Day 01]

    目录 1. Linux 简介(略过) 2. Linux 基本概念及操作:命令.快捷键与通配符 2.1 基础命令 2.2 终端快捷键 2.3 通配符 2.4 帮助命令 3. 用户及文件权限管理 3.1 ...