Sales Cloud线索管理 - 线索转化异常"Unable to convert lead that is in use by workflow"

171 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

案例背景

管理员想在Lead被转化之前为该线索安排Email Journey,即Lead被创建后每天发送一封Welcome的Email给Email不为空的潜在客户,这个Journey将持续9天。

情景延伸

管理员很自然的为该业务创建了基于时间的Process Builder,即为Lead创建了一个Email系列的Process Builder,在创建后的1,2,3,4,5,6,7,9d执行Scheduled Action来发送不同内容的Email Alert。

问题描述

后面管理员发现,如果某条Lead在即将执行Action的队列里,那么在Covert线索时候就会报错,如下:

Error: Unable to convert lead that is in use by workflow.

​编辑

解决方案

  1. 我们需要创建一个Checkbox类型的字段开关称为:Cancel Workflow;
  2. 把该字段加入是否进入Process Builder的准入条件中,即other condition + cancel workflow(false)时,执行Scheduled Action;
  3. 重写Convert标准按钮,用于勾上Cancel Workflow就能在重新评估Process Builder时不执行。

Demo重现

  1. Business Use Case:

  2. 要定义上述Process需要事先创建Picklist字段(Email1, Email2,Email3)和Cancel Workflow的checkbox字段,默认为Unchecked,同时需要创建3个Email Template和3个Email Alerts准备就绪;

  3. 接下来我们把Process Builder创建好后可以创建一天符合条件的Lead,让Schedule进入执行队列,那么为了验证你的Process是否有执行可以在Flow里面查看,如下:

  4. 最关键的一步我们来重写Convert,因此可以创建一个CancelLeadWorkflow的vf:

<apex:page standardController="Lead" > 
	<apex:form > 
		<div style="visibility:hidden;"> 
			<apex:inputField value="{!Lead.Cancel_Workflow__c}" id="cancelWorkflow" style="visibility:hidden; "/> 
		</div> 
		<apex:actionFunction name="quickSave" action="{!quickSave}" oncomplete="standardConvert();"/> 
		<apex:actionFunction name="standardConvert" 
		action="{!URLFOR($Action.Lead.Convert, lead.id, [retURL=$CurrentPage.parameters.retURL], true)}" />

		<script language="JavaScript"> 
			var previousOnload = window.onload; 
			window.onload = function() { 
				if (previousOnload) previousOnload(); 
				fixLead(); 
			} 
			function fixLead() { 
				var elemCancelWorkflow = document.getElementById('{!$Component.cancelWorkflow}'); 
				elemCancelWorkflow.checked = true; 
				quickSave(); 
			} 
		</script> 
	</apex:form> 
</apex:page>
  1. 当我们用该页面重写了Convert按钮后,我们就可以把队列里面的Scheduled Action关掉,从而实现正常转化。