使用SFDX-Deploy-Tool删除Metadata

背景】:在探索Data Sharing & Visibility Designer模块时,想基于复杂的Role Hierarchy来做POC(比如Business Unit底下增加Territory地域维度,并将Partner Community和Salesforce不同类型User Type的Role Hierarchy衔接在一起),以深入理解这方面的知识。我们知道一个DE Org最多有2个Salesforce License和5个Partner Community User License在尝试使用两套不同Role Hierarchy并用Deactivate User的方式来实现不同Role Hierarchy的切换后,依然无法满足对更复杂的Data Sharing POC的要求,思索几天后还是决定刷一个Sandbox Pro来解决License不够的问题。为了打造一个纯净的环境,清除不必要的Metadata(比如Installed Packages, Inactive的Flow,多余的Apex Class,VFP,Page Layout, Business Process, Object等)就显得尤为重要。

选用工具】:SFDX-Deploy-Tool
基本介绍:我们在设定好source org, destination org等相关配置信息后(包括package的构建),只需要输入相应的数字1-7,就能实现元数据部署相关的操作
使用SFDX-Deploy-Tool删除Metadata_第1张图片

使用SFDX-Deploy-Tool删除Metadata_第2张图片

由于系统高度自定义,admin和developer产生了很多自定义的信息,所以下面不过多累述如何将环境清理干净的过程,而是专注于几个核心模块,介绍该工具如何帮助提升元数据清除工作的效率。

模块一:如何清除系统中Process Builder和Flow?】:Deleting Lots of Old Flows / Process Builders
步骤:
1. 构建package元素Flow(Process Builder包含在Flow里面)
a. 使用下面SOQL查询Draft和Obsolete状态的Flow (该方法只能删除Inactive的Flow / PB),查询时需勾选"Use Tooling API?"

SELECT Id, Definition.DeveloperName, VersionNumber, Status FROM Flow WHERE Status IN ('Draft', 'Obsolete') ORDER BY Status, Definition.DeveloperName

b. 查询出来后需要使用Excel构建xml所需member节点 (DevName-vNo),如下:
使用SFDX-Deploy-Tool删除Metadata_第3张图片

c. 构建destructiveChanges.xml



    
        CZ_2019_AWAKEN_PROFILE_UPDATE_Reward_Code_Email_Alert-1
        CZ_2019_AWAKEN_Reward_Code_Email_Alert-2
        CZ_2019_WELCOME_Reward_Code_Email_Alert-1
        Email_Activity_History-1
        Email_Reminder_on_Task_for_CCC-1
        Lead_and_Case-1
        Marketing_Material_Opt_Out_and_Email_Opt_Out-6
        Survey_A-5
        Update_the_Inactive_Consultant_s_Client-2
        Flow
    
    48.0

2. 删除Inactive的Flow打开bat文件后,输入7,静待删成即可!
使用SFDX-Deploy-Tool删除Metadata_第4张图片

3. 最终效果:

使用SFDX-Deploy-Tool删除Metadata_第5张图片

使用SFDX-Deploy-Tool删除Metadata_第6张图片

幕后花絮 —— Q&A:
Q1. 遇到的最大挑战是什么?
A1. 我们知道可以在pb里面call flow,也就是说flow间是存在依赖的,所以如果笼统的将flow members放在一起的简单粗暴模式显然走不通 (见下图);另外即使没依赖,更不能想当然不检索有哪些definition而直接用*通配符代表所有
使用SFDX-Deploy-Tool删除Metadata_第7张图片

Q2. 上文提到不能删Active的Flow,难不成最终是手动挨个点Deactivate,然后再用工具删的?
A2. 最终通过检索Flow和FlowDefinition元数据,并修改FlowDefinition的activeVersionNumber (0表示Inactive),再通过vs code部署元数据到sandbox,实现禁用操作。
模板:Deactivate a process or flow using workbench
Temp01 - package.xml



    
        *
        Flow
    
	
		*
        FlowDefinition
	
    48.0

优化:鉴于以上过程过于复杂,如感兴趣,不妨试下这款工具ForceFlow,有机会详细介绍下如何使用脚本自动化一些重复性的任务。

你可能感兴趣的:(Tools,Skill,Salesforce,Experience,Sales,Cloud)