salesforce零基础学习(一百二十九)Lead Convertion 有趣的经历
本篇参考:https://help.salesforce.com/s/articleView?id=000382564&type=1
Lead Convertion 是salesforce中sales cloud的一个很好用的功能。sales cloud流程可以简单的理解成 lead to cash。当对lead进行打分以及不断的孵化以后,优质lead会转成 Account & Contact & Opportunity。
背景: Lead / Contact / Opportunity 都创建了自定义的Picklist字段 Primary,包含的值为True以及false。并且做了Convert的field mapping。

后来需求变化,Opportunity的Primary字段变成了Checkbox类型,并且UI上来看,Map Lead Fields区域匹配关系已经自动消失。

我们来做一下lead convert的实验。
1. 被validation rule拦截:这种报错的好处是特别好定位到错误的位置,系统会提示哪个表被触发了validation rule导致失败。

2. 未知错误。There was an error converting the lead. Please try again. If the problem persists, please contact your administrator:发生这种问题以后,即使查看debug log也很难查出来问题,下方demo中的debug就没有特别多的信息,那么如何去处理这种问题呢?

我们看到文档中主要包含4种定位的错误:
- Converting Lead into Existing Opportunity:多货币情况下,如果lead的货币(currency)和已有的Opportunity的货币不同,转换时会出现这种报错,这种情况下保证两边货币相同即可;
- Field mapped to package that is expired:如果有一个自定义字段被映射到Account或Contact Object,而该字段是已过期或已禁用的托管包的一部分,那么线索转换可能会失败。这种情况下检查为组织安装的软件包,找到任何接触到 Lead的软件包,并检查作为该软件包一部分的任何自定义字段,确保在该软件包过期或禁用的情况下,它们不会仍被用于映射;
- Discrepancy in the mapped picklist field:针对picklist类型字段,如果两边picklist value不同,可能会导致失败,这种情况下检查两者的value值;
- Flow Error related to automation:当Lead Convertion时,相关目标表的automation flow有bug导致的问题。这种情况下可以打一个debug log去诊断。
切回到上方的问题,如何来快速定位到呢? 下面是我当时的一个经历,说不上最优,仅供参考。
1. 首先定位到哪个表发生的问题,通过debug log发现日志已经走了 Account以及Contact并且没有报错,说明大概率是Opportunity出现了问题,导致了这个未知错误,在诊断时,先不选择Opportunity看是否转换成功,如果成功则证明Opportunity问题,否则重新定位。

2. 既然确定是Opportunity的问题,则优先调查process automation相关,即Workflow / Process Builder / Flow。通过日志我们发现没有Opportunity的报错,说明大概率不是automation导致的问题,保险起见,我们可以在测试环境关闭所有的automation,测试是否由这个引起。
3. 如果不是2引起的,大概率是picklist匹配问题导致,两种情况:
- picklist value不匹配;
- picklist类型变了其他的类型,导致类型不匹配。
类型不匹配比较较快,这里推荐一个简单的方法。我们把lead field mapping资源通过metadata 检索下来,再重新部署,如果不报错证明配置没问题,如果报错证明出现问题,则可以快速定位到问题。
xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<members>*</members>
<name>LeadConvertSettings</name>
</types>
<version>56.0</version>
</Package>
效果如下:

通过这种方式就可以快速的定位到了问题,这个问题令人挺疑惑的,因为从最开始的gif可以看到,UI上来看,这个mapping已经解除了,但其实没有,metadata层面还保留,只有UI点击了save以后才生效。
总结:篇中主要介绍了针对Lead Convertion制定错误的思考,篇中不一定是最优解,仅供参考,有错误地方欢迎指出,有不懂欢迎留言。
salesforce零基础学习(一百二十九)Lead Convertion 有趣的经历的更多相关文章
- salesforce 零基础学习(二十九)Record Types简单介绍
在项目中我们可能会遇见这种情况,不同的Profile拥有不同的页面,页面中的PickList标签可能显示不同的值.这个时候,使用Record Types可以很便捷的搞定需求. Record Types ...
- salesforce零基础学习(八十九)使用 input type=file 以及RemoteAction方式上传附件
在classic环境中,salesforce提供了<apex:inputFile>标签用来实现附件的上传以及内容获取.salesforce 零基础学习(二十四)解析csv格式内容中有类似的 ...
- salesforce 零基础学习(二十二)Test简单使用
本篇内容只是本人简单的mark开发中常出现的一些疑问,方便后期项目使用时奠定基础,如果对Test零基础童鞋,欢迎查看Test官方的使用介绍: https://help.salesforce.com/a ...
- salesforce 零基础学习(二十)简单APP制作
本篇参考链接:https://developer.salesforce.com/trailhead/project/salesforce_developer_workshop 本篇讲述的是最简单的AP ...
- salesforce 零基础学习(三十九) soql函数以及常量
在salesforce中,我们做SOQL查询时,往往需要用到计算式,比如求和,求平均值,或者过滤数据时,往往需要通过时间日期过滤,SOQL已经封装了很多的函数,可以更加方便我们的sql查询而不需要自己 ...
- salesforce 零基础学习(二十八)使用ajax方式实现联动
之前的一篇介绍过关于salesforce手动配置关联关系实现PickList的联动效果,但是现实的开发中,很多数据不是定死的,应该通过ajax来动态获取,本篇讲述通过JavaScript Remoti ...
- salesforce 零基础学习(二十四)解析csv格式内容
salesforce中支持对csv格式的内容批量导入,可以使用dataloader,然而有些情况下,当用户没有相关权限使用dataloader导入情况下,就的需要使用VF和apex代码来搞定. 基本想 ...
- salesforce 零基础学习(六十九)当新增/修改一条记录以后发生了什么(适合初学者)
salesforce开发中,我们会对object进行很多的操作,比如对object设置字段的必填性唯一性等,设置validation rule实现一下相关的字段的逻辑校验,设置workflow实现某个 ...
- salesforce零基础学习(七十九)简单排序浅谈 篇一
我们在程序中经常需要对数据列表进行排序,有时候使用SOQL的order by 不一定能完全符合需求,需要对数据进行排序,排序可以有多种方式,不同的方式针对不同的场景.篇一只是简单的描述一下选择排序,插 ...
- salesforce 零基础学习(五十九)apex:param使用以及相关的疑惑
做web项目难免要从一个页面传参数,解析参数中的值进行相关处理以后跳转到其他页面,VF中也不例外.使用传参的标签为apex:param. apex:param标签不可以单独使用,需要作为子标签嵌套在相 ...
随机推荐
- 官宣 | Hugging Face 中文博客正式发布!
作者:Tiezhen.Adina.Luke Hugging Face 的中国社区成立已经有五个月之久,我们也非常高兴的看到 Hugging Face 相关的中文内容在各个平台广受好评,我们也注意到,H ...
- c# 异步进阶———— 自定义 taskschedule[三]
前言 我们知道我们的task async 和 await 是基于线程池进行调度的. 但是async 和 await 也就是使用了默认的task调度,让其在线程池中运行. 但是线程池是榨干机器性能为本质 ...
- 【总结】从++i思考计算机原子性和线程安全
在C++中,++i被认为是一种原子性操作,即不可分割的.不可中断的整体.它能够确保对变量的修改完整且正确,从而避免了数据竞争等问题,提高了程序的并发性和可靠性.然而,有些人可能会将原子性和线程安全混淆 ...
- shell执行一个程序过程
1:shell调用执行程序或脚本 2:unix内核启动一个新的进程,在该进程中执行所指定的程序. 3:如果是编译型程序,内核成执行,如果无法执行指定的程序,返回"not executable ...
- selenium 多窗口处理与网页frame
多窗口处理 点击某些链接,会重新打开一个窗口,对于这种情况.想在薪页面操作,就得先切换窗口了. 获取窗口得唯一标识用句柄表示,所以只需要切换句柄,就可以在多个页面进行操作了 1. 先获取到当前得窗口句 ...
- 2023-01-09:以下go语言代码输出什么?A:+Inf; B:zero; C:something else; D:doesn‘t compile。 package main import (
2023-01-09:以下go语言代码输出什么?A:+Inf: B:zero: C:something else: D:doesn't compile. package main import ( & ...
- 报错HTTP 405 Method Not Allowed, Allow: POST, OPTIONS, "detail": "方法 “GET” 不被允许。"
当测试注册功能是否实现时,出现了这种情况的405:HTTP 405 Method Not AllowedAllow: POST, OPTIONSContent-Type: application/js ...
- [NISACTF 2022]bingdundun~
[NISACTF 2022]bingdundun~ 考点 文件上传.Phar://伪协议 一.题目 打开题目,发现是一道文件上传的题目,因为提示了可以压缩包,所以尝试直接上传zip文件,然后利用PHP ...
- AcWing 1024. 装箱问题
有一个箱子容量为 V,同时有 n 个物品,每个物品有一个体积(正整数). 要求 n 个物品中,任取若干个装入箱内,使箱子的剩余空间为最小. 输入格式 第一行是一个整数 V,表示箱子容量. 第二行是一个 ...
- docker安装带postgis插件的postgresql 数据库
最初直接拉取的postgresql 数据,在导入 .bakup 文件时始终会报错,最后才想到该数据库默认不带postgis空间组件 一.拉取镜像 这里我们拉取postgres 和 gis 组合的镜像 ...