プログラマ38の日記

主にプログラムメモです。

Salesforce: リードの取引の開始をApexで行う時の注意事項

リードの取引の開始をまとめて行う場合に、Apex(もしくはAPIの)を使う場合があります。その際の注意事項を書いておこうと思います。

 

ApexでDatabase.convertLead(APIでconvertLead、以下Apex前提で記載します)を行う場合次の2点の考慮が必要です。

  1. リードの所有者がキューか
  2. 既存の取引先責任者、既存の商談に関連付けを行うか

1のリードの所有者がキューの場合、そのままDatabase.convertLeadを行うとエラーとなるので、Database.convertLeadを行う前に、所有者をユーザへ変更しておく必要があります。(所有者がユーザであれば、たとえそのユーザが無効ユーザであってもエラーになりません・・・)

2の既存の取引先責任者、既存の商談に関連付けする場合、LeadConvertクラスで

  • setAccountId(accountId)
  • setContactId(contactId)
  • setOpportunityId(opportunityId)

を指定しますが、setAccountIdで指定した取引先と、setContactIdで指定する取引先責任者の取引先は同じである必要があります。

同様に、setAccountIdで指定した取引先とsetOpportunityIdで指定する商談の取引先も同じである必要があります。
なので、既存の取引先責任者、商談に関連付けを行う場合はあらかじめ取引先をそろえてからDatabase.convertLeadをするか、Database.convertLeadをする前に取引先が同じかの判定をいれておく必要があります。


最後に

取引の開始では項目の対応付けの設定を使います。項目の対応付けは、Winter'20まではメタデータでしかリリースできず、メタデータの「LeadConvertSettings」で取得し、別環境へデプロイをしていました。
ですが、Spring'20で変更セットでリリースできるようになりました。