本篇参考:http://salesforce.vidyard.com/watch/bLE3QNRSej2iasw9vvc6Tk
http://salesforce.vidyard.com/watch/kXk6BaNlWJP27UyFO8vNUg
前一篇讲了custom community的开启以及简单的使用,custom community固然比较好,但是访问的数据有限,如果需要和CRM数据相关的(Lead/Opportunity等),我们需要使用partner community license。本篇主要讲解partner community的启用以及数据权限的控制。
一. partner community的启用
某个公司有某些产品使用salesforce进行销售,其有很多重要客户购买了产品作为了资产,当客户购买产品使用以后觉得很好并且想作为合作伙伴共同进行协同销售,此客户便可以同时变成partner account,并且其对应的contact可以作为partner contact去共享数据操作。partner community的启用步骤如下:
1. account page layout将Mobile & Lightning Actions中的Enable as Partner以及Disable Partner Account 两个action移到page layout中;
2. contact page layout将Mobile & Lightning Actions中的Enable Partner User以及Disable Partner User两个action移到page layout中;
这两步做好以后我们就可以转换一个account变成一个partner account了,demo中使用Edge Communications这个名字的account,我们申请的dev环境默认就有此客户的数据信息。
3. 当quick action处显示的按钮为disable Partner Account说明我们已经成功的enable partner account,Account的表中有字段 IsPartner来标记它是否为一个partner account,默认情况下我们需要点击Enable Partner Account按钮变成一个partner account。
4. 当我们对account转换成partner account以后,便可以对他们的contact转换成partner contact.默认显示的quick action为Enable Partner User,点击此按钮以后会跳转到创建user的页面,我们只需要license选择 Partner Community,Profile选择Partner Community User即可。当然,如果 Partner Community User这个标准的profile搞定不了,建议大家可以克隆一下这个profile,然后按照项目需求设置相关的权限。下图中展示了Disable Partner User说明已经启用成功,点击Disable按钮则会禁用。
这个是我们创建的user信息,我们默认创建的时候,理论上role是不用操作和选择的,这里是因为我们设置了account role的层数超过了1,所以这里可以选择,下面的章节会对数据访问权限等进行讲解。通过图中信息我们可以看到当前的user上有一个字段为contact,当contact挂值情况下,代表这个user是一个community user。
5. 我们创建一个template为 Partner Central的community,配置好以后选择Administrator|members将Partner Community User设置到available,然后settings将community 状态设置成active即可。
二. Who see What
当我们创建好partner community并且已经对account / contact转换成相关的 partner account / partner contact以后,下一步应该考虑的是谁能看到什么,怎么设置默认权限,怎么扩展权限,下面的内容将简单的介绍一下community下的数据权限以及共享的简单管理。
1. community role hierarchy
Salesforce针对数据的权限管理可以大概分4层,Org-Wide Defaults / Role Hierarchy / Sharing Rules / Manual Share。这四层不管是内部还是外部community针对数据权限控制都适用。
Org-Wide Default是最基本的控制,通过 profile / permission set来设置人员对于某个某些表的CRUD / View All / Modify All的权限。
Role Hierarchy在Salesforce中是一个特别常用的功能,你的上级领导业务上可以看到他的所有的下属的数据,这个就是基于role hierarchy默认实现,如果涉及到某些隐私的数据需要只有owner以及管理员可以查看的情况下,需要在sharing setting的grant access via role hierarchy反选。下图中VP Channel Sales作为Role中的最高点,默认情况下,他就可以看到US Channel Sales Director等所有的Role的数据,前提是grant access via role hierarchy勾选的情况下。
Sharing Rules在我们的项目开发中更是不可或缺的功能,当默认的sharing规则不能搞定所有的场景,某些场景可能级别低的针对某种场景也要协同合作的时候,可以基于Sharing Rule设置自定义的共享规则来设置其他 User / Group / Role的共享权限。比如account的industry 为Energy情况下需要共享给Group 名称为 Energy Core Members的所有成员有Read Only权限,无论members的Role是什么,这时候就要用到了Sharing Rules了。
Sharing Rule有两种实现,基于owner的以及基于条件的,这两种常用功能大家不懂得自行补齐基础知识。
Manual Sharing是针对数据owner的权利,数据的owner可以将自己own的数据共享给别人去赋予别人对某条数据的权限。
在数据权限管理上,内部和外部是一样的操作。在之前的custom中,我们知道没有role的概念,在partner community中,我们可以进行role的设置从而实现role hierarchy。在salesforce中最多可以设置3层,在community setting中即可配置。当然,salesforce并不建议大家多配置层级,多配置层级会影响performance,所以一层能搞定的业务用一层,一层搞不定的用两层,如果业务有必要的需求情况下再用3层。
设置完以后,编辑以前的community user,便可以选择这个community user的对应的role了,community user选择的role的名字为account 的name manager / user等命名,设置完以后便实现了community 的role hierarchy。
2. community sharing setting
上面有提到过 sharing setting可以扩展share权限。我们在sharing setting处可以设置内部和外部的基于某些表的访问权限,salesforce要求的是针对外部的访问权限应该小于等于内部的人的权限,即内部的人员对某个表的数据权限一定要高于外部。如果默认的sharing setting / sharing set以及role hierarchy满足不了情况下,我们可以对外部的community 用户设置sharing setting来扩充他们的数据访问权限。下面的demo为我们设置如果Account的Industry 为Energy情况下,我们需要共享给Group名称为Partner_Managers_and_Channel_Director的所有用户,这个group中我们放置了partner role为Edge Communities Partner Manager。Sean的用户我们的角色为这个manager,用来进行权限的共享实验。
我们先对Sean这个账号访问某个不是他own的account,demo中使用的是United Oil & Gas Corp. 我们使用UserRecordAccess来查看当前的用户对这条记录的访问权限发现他现在对这条记录没有read | edit权限,即当前这个community user访问community也看不到这条记录。
我们以这个contact login as community查看的效果如下,图中他能看到的account就只有他own的或者他的下属的account。
默认的navigation menu可能没有accounts,我们应该按照下方的步骤,在community builder中操作然后publish。
点击Add New Menu Item放在Sales 一级menu下按照图配置即可。
接下来通过sharing setting对group进行share,从而实现community manager可以看到industry为energy的数据。并且赋予的权限为read only。
重新运行以后可以看到这个community user对这条记录拥有了read 权限,但是没有edit权限。
总结:篇中主要介绍了partner community的启用,以及partner community的数据权限相关的内容,篇中有错误地方欢迎指出,有不懂的欢迎留言。