首先庆祝一下自己定的MS CRM2016的工具书终于入手了,可以开始准备最新的MB2-712 – CRM 2016 customisation and configuration certification。
查了一下hosk大神的blog,果然有我需要的东西,和大家分享一下链接:
https://crmbusiness.wordpress.com/2016/06/21/mb2-712-crm-2016-customisation-and-configuration-hosk-study-notes/
MSDN关于Developer需要知道的CRM 2016 new feature的链接:
https://msdn.microsoft.com/en-us/library/gg309589.aspx
决定就这篇博客,自己的使用心得,工具书以及MSDN上对新功能的描述做一个从自己只是出发的摘要:
CRM 2016 新功能 这个新功能主要是基于2015到2016的变化,之后再做一个2013到2015的新功能总结。
From MSDN:
最新的SP1提供的新功能
1.Customer entity可以用于任何实体。Customer lookup可以是contact或者account,之前的版本customer lookup是默认在Contract, Incident, Lead, Quote,Opportunity, and SalesOrder这些实体上使用的,CRM 2016允许你自己创建新的customer entity然后在所有实体上使用。
2. Web API加强
a. web api现在允许你使用single value navigation property去filter data
navigation property是指允许你取得与当前record相关的实体, 之前的版本如果你使用navigation property的话会得到501 error,
如
GET [Organization URI]/api/data/v8.0/accounts?$select=name&$filter=primarycontactid/firstname eq 'Renee' HTTP/1.1
之前的response是:single navigation property支持many to 1的relationship,也就是用来filter的那个attribute必须from那个parent entity. 在上面的那个列子中, 就是用的contact的firstname field。HTTP/1.1 501 Not Implemented Content-Type: application/json; odata.metadata=minimal OData-Version: 4.0 { "error": { "code": "", "message": "The query node (0) is not supported", "innererror": { "message": "The query node (0) is not supported", "type": "Microsoft.Crm.CrmHttpException", "stacktrace": <stacktrace value removed for brevity> } } }而现在就会返回HTTP/1.1 200 OK Content-Type: application/json; odata.metadata=minimal OData-Version: 4.0 { //account data }
b. 使用expanding navigation property去为实体集合取相关实体。
基于expanding的query有两种: single value 和 collection value
single value用于支持many to one, 示例如下:
GET [Organization URI]/api/data/v8.1/accounts?$select=name&$expand=primarycontactid($select=contactid,fullname) HTTP/1.1和之前的区别是加上了$expand,但是这条query返回的是contact entity,是所有account的primary contact records.
GET [Organization URI]/api/data/v8.1/accounts(00000000-0000-0000-0000-000000000001)?$select=name&$expand=primarycontactid($select=contactid,fullname) HTTP/1.1而这条query将返回对于这个accounts的primary contact records.
collection value用于支持one to many 和 many to many,示例如下
GET [Organization URI]/api/data/v8.1/accounts(915e89f5-29fc-e511-80d2-00155db07c77)?$select=name&$expand=Account_Tasks($select=subject,scheduledstart)这条query将会返回所以属于这个account的tasks.
Single Value 和 collection value还可以组合使用
如
GET [Organization URI]/api/data/v8.1/accounts(99390c24-9c72-e511-80d4-00155d2a68d1)?$select=accountid&$expand=parentaccountid($select%20=%20createdon,%20name),Account_Tasks($select%20=%20subject,%20scheduledstart) HTTP/1.1
这条query将返回这个account 的 parent account record以及属于他的tasks.
3. 增加了一些CRM前端开发的新功能:
a. subgrid可以直接通过XRM来操作,提供了一些对象和函数
https://msdn.microsoft.com/en-us/library/dn932126.aspx
b.
Xrm.Page.data.entity.getId()去得到当前record的GUID
c.
Xrm.Page.getControl加了几个新函数,分别是针对lookup的addcustomfiler 和 addcustomview, 通用的setfocus和针对date的setShowTime
d.
Xrm.Page.ui
加了几个新函数,close用来取代window.close,getCurentControl来获取当前control object. set/clearFormnotification来添加/去掉notification.
e. tab增加了get/setDisplayState, get/setLabel和setFocus函数
f. 通过Xrm.Page.ui.Navigation来控制navigation item
g. 为Xrm.Utility(包含所有与当前page无关的有用函数)添加openEntityForm和openQuickCreate,函数作用顾名思义。
h.增加getInitialUrl for Iframe control 增加getObject,get/setSrc for Iframe和webresouce.
g. knowledge base search control现在支持MSDN上的所有function.
4. CRM mobile APP现在也支持knowledge base search control的所有功能。
5. 允许通过 Settings > Application > Interactive Service Hub 的来方便的launch interactive Service hub.
6,service level agreement 从只能在case上使用变为可以在custom entity和activity,account,contact, invoice,case,opportunity,quote,lead,salesorder使用。
7. 新的category entity 可以实现tag 不同entity的功能。
8. feedback entity可以实现对record 提供feedback和rating的功能。
9.package deployer功能加强: CRM 2016允许使用visual studio去创建一个CRM pakage visual studio project template. 使用这个template可以做如下设定:
a,b,c,d,e
关于pakage deployer会在之后的博客和一些有用的工具一起做详细的讨论。
10. XRM.tooling.connector的功能增强
XRM tooling是一些api的集合,这些api的功能基于organization service和IDiscoverysevice, 主要用于building windows client application.
新功能包括:
a. 使用connect string for CRM online, 如果url包含了organzation, 将可以直接连接对应的organzation.
<connectionStrings> <add name="MyCRMServer" connectionString="AuthType=AD;Url=http://contoso:8080/Test;" /> </connectionStrings>
//Use the connection string named "MyCRMServer" //from the configuration file CrmServiceClient crmSvc = new CrmServiceClient(ConfigurationManager.ConnectionStrings["MyCRMServer"].
b. 使用oAuth 和 custom oAuth connection, supporting app.config里面的timeout setting将正确的执行
CrmServiceClient crmSvc = new CrmServiceClient("<UserName>", CrmServiceClient.MakeSecureString("<Password>"), "<CrmRegion>", "<OrgName>", useUniqueInstance:false, <orgDetail>, <userIdentifier>, <clientId>, <redirectUri>, <tokenCachePath>, <externalOrgWebProxyClient>, PromptBehavior.Auto);
c. Xrm.Tooling.CrmServiceClient 现在可以继承IOrganzation service interface, xrm tooling的功能比如threading, diagnostics可以被应用。
public sealed class CrmServiceClient : IOrganizationService
11. 简化了interactive Dashboard的stream items.(具体区别有待研究)
12
-
Invoice Product (InvoiceDetail)
-
Order Product (SalesOrderDetail)
-
Quote Product (QuoteDetail)
13. 基于microsoft Azure的一些优化
14.加入了新的实体和privileges.
以上就是我理解的CRM 2016 sp1(MS CRM 8.1)提供的新功能。 下一篇博客将介绍CRM 2016(MS CRM 8.0)提供的新功能。