如何大規模地更新各 profile 對於某個 object 的 record type 的存取權限 How to mass update record type visibility for every profile?
情境說明
之前有一篇談到如何快速用 SOQL 撈出哪些 Profile / Permission Set 有權限對某特定 Object 做 Create/Read/Update/Delete
那篇的主題是針對 object record的 CRUD 在討論。但今天我們有另一個不同的面向要處理:如何大規模地查看或更新各 profile 對於某個 object 的 record type 的存取權限。
這又是一個獨立的設定了。不是 record 層級的設定,也不是 Field-Level Security 的設定。是 Record Type 的設定。
若只是要更動一兩個 profile 的 record type access permission 倒也不難,網頁上滑鼠點一點即可。但如果今天我們需要大模模更動呢?
例如我們有某一個既有的Opportunity Record Type,想要一次開給所有 Profile 都能有存取權限。或是反過來,想要讓僅一兩個 Profile 擁有存取權限,其它通通都不準看到。
難道我們要一個個點進每一個 Profile 去慢慢檢查、慢慢設定嗎?
此處提供一個沒那麼辛苦的解法。
解法概念
- 用 SFDX 下載 Profile and Record Type 的 XML 檔
- 用 Visual Studio Code 尋找、大量取代
- Deploy 回 Salesforce
解法細節
第0步,把Visual Studio Code 和 SFDX 環境設定好。
- 用 SFDX 下載 Profile and Record Type 的 XML 檔
- 準備同時包含 Profile 和 RecordType的 XML
package.xml<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Package xmlns="http://soap.sforce.com/2006/04/metadata"><types><members>*</members><name>Profile</name></types><types><members>*</members><name>RecordType</name></types><version>55.0</version></Package> - Retrieve Source in Manifest from Org
- 用 Visual Studio Code 尋找、大量取代 <recordTypeVisibilities> tag
(此圖範例為把 Opportunity 的 foo Record Type 打開)
tag example:<recordTypeVisibilities><default>false</default><recordType>Opportunity.foo</recordType><visible>false</visible></recordTypeVisibilities> - Deploy 回 Salesforce
留言
張貼留言