salesforce 中 Account 转移给新 Owner 后如何仅转移 Case,而不转移 Opportunity
在 Salesforce 中,当更改 Account Owner 时,系统默认会将所有相关的 Opportunities(商机) 和 Cases(案例) 也一并转移给新的 Account Owner。如果你希望 仅转移 Case,而不转移 Opportunities,可以考虑以下几种方法:
方案 1:手动调整(适用于小规模调整)
- 更改 Account Owner 时,在弹出的“确认所有权转移”窗口中:
- 取消勾选 “Transfer open opportunities”(转移开放的商机) 选项。
- 保持勾选 “Transfer open cases”(转移开放的案例)。
- 确认后提交,只有 Case 会转移,而 Opportunities 仍然归原来的 AM。
方案 2:流程自动化(适用于大规模调整)
如果你需要自动化这个流程,可以通过 Flow(流程构建器) 或 Apex 触发器 来实现:
方法 1:使用 Flow
- 进入 Setup(设置) > Flow(流程)。
- 选择 Record-Triggered Flow(记录触发流)。
- 触发条件:
- 当 Account Owner 变更 且 新 Owner 是 BS 时触发。
- 添加决策逻辑:
- 如果 Account Owner 发生更改,则更新所有 Case 的 Owner 为新的 BS。
- 不包含 Opportunities 的变更。
- 保存并激活 Flow。
方法 2:使用 Apex Trigger
如果 Flow 无法满足需求,可以使用 Apex Trigger 进行更细粒度的控制:
trigger PreventOpportunityTransfer on Account (before update) {
for (Account acc : Trigger.new) {
Account oldAcc = Trigger.oldMap.get(acc.Id);
// 只有当 Owner 发生变更时执行
if (acc.OwnerId != oldAcc.OwnerId) {
// 查找该 Account 下的所有 Opportunities,并恢复 OwnerId
List<Opportunity> opps = [SELECT Id, OwnerId FROM Opportunity WHERE AccountId = :acc.Id];
for (Opportunity opp : opps) {
opp.OwnerId = oldAcc.OwnerId; // 保持原来的 Owner
}
update opps; // 更新商机,保持原有 Owner
}
}
}
解释:
- 当 Account Owner 发生变更时,触发器会自动 保持 Opportunities 的 Owner 不变,从而只转移 Cases。
方案 3:使用 Data Loader 进行批量更新
如果只是一次性调整,可以:
- 先导出 需要修改的 Account 及其相关的 Opportunities 和 Cases。
- 手动修改 需要转移的 Cases 的 Owner,而不修改 Opportunities 的 Owner。
- 使用 Data Loader 或 Workbench 进行批量更新。
总结
- 手动操作 适用于小量数据,直接取消勾选“Transfer open opportunities”即可。
- Flow 自动化 适用于需要规则化操作,能避免人工操作失误。
- Apex 触发器 适用于更复杂的逻辑,比如防止系统意外转移 Opportunities。
- Data Loader 批量更新 适用于一次性调整大批量数据。
你可以根据需求选择合适的方法,如果你的 Salesforce 版本支持 Flow,推荐优先尝试 Flow 方案,无代码即可实现。