Salesforce × AWS Partner Central を AWS Partner CRM Connector でつないでオポチュニティ登録を自動化した話【ハマりどころ編】

こんにちは!エンジニアの岩間です。

 

Salesforce × AWS Partner CRM Connector の連載、第4回です。

 

テーマ
第1回 導入編 — なぜ AWS Partner CRM Connector を入れたのか
第2回 セットアップ編 — Guided Setup と指定ログイン情報のハマりどころ
第3回 フィールド設計編 — フィールド追加から日本語化・仕様突き合わせまで
第4回(本記事) ハマりどころ編 — パッケージのバグから仕様の罠まで
第5回 運用編 — 同期機能の使い分けと提出フロー
第6回 Backfill / Refresh 編 — 受信エラーとの戦い

 

前回まででフィールド設計と日本語化が完了し、あとは Share With AWS で送信するだけ…と思っていたら、ここからが本番でした。今回は、実際に送信・受信を試していく中で踏んだ地雷をまとめます。

 

em dash とハイフンの文字コード不一致

 

最初に踏んだのがこれです。Share With AWS を実行すると、ピックリスト値のバリデーションエラーが返ってきました。

 

 

原因は、AWS Partner CRM Connector パッケージが Field Mapping Detail の awsapn__Target_Value__c に em dash( U+2013)を初期データとして登録しているのに対して、AWS API は半角ハイフン(- U+002D)しか受け付けないことでした。見た目はほぼ同じなので、目視では気づけません。

 

影響を受けたのは closedLostReason(失注理由)の5件と subUseCase(サブユースケース)の3件、合計8件です。

 

 

修正は Apex で一括置換しました。

 

 

sf data update record コマンドでも試しましたが、シェルのエンコーディングの問題で em dash をうまく扱えないことがあるので、Apex が確実です。

 

電話番号の国際形式

 

 

AWS Partner Central API は電話番号を国際形式で要求します。0312345678 ではなく +81312345678 と入力する必要があります。

 

これ自体はエラーメッセージを読めばすぐわかりますが、日本の電話番号を扱う場合は +81 のバリデーションルールを追加しておくと、送信前にミスを防げます。

 

ビジネスバリデーションエラー

 

AWS API 側にはフィールド間の依存関係に基づくバリデーションがあります。

 

 

 

たとえば、マーケティングソースが「No」なのに AWS Funding Used に値が入っていたり、ステージが Closed Lost ではないのに失注理由が入っていたりするとエラーになります。

 

これらはデータの整合性の問題なので、条件に合わない値をクリアすれば解決します。ただ、どのフィールドとどのフィールドに依存関係があるかはドキュメントに網羅的には書かれていないので、エラーが出たら都度対応する形になります。

 

Field Mapping のラベルと API 名の混同

 

これは地味ですがハマりやすいポイントです。awsapn__Salesforce_API_Field_Name__c にはフィールドの API 名(ACE_Stage__c)を入れるのですが、ラベル(ACE Stage)が入ってしまっていることがありました。

 

ラベルが入っているとマッピングが正しく動作しません。__c が付いているかどうかで判別できますが、手動でマッピングレコードを作成・修正するときは注意が必要です。

 

標準 Opportunity で Null Reference エラー

 

標準の Opportunity オブジェクトから Share With AWS を実行すると、以下のエラーが出ました。

 

 

Managed Package 内部のエラーなのでソースコードは確認できず、Sync Log にも詳細が記録されません。試しに ACE Opportunity(カスタムオブジェクト)にマッピングを切り替えると正常に送信できたため、標準 Opportunity 固有の問題だとわかりました。

 

原因は、標準 Opportunity に必要なフィールドとマッピングが完全には揃っていなかったことです。ACE Opportunity には最初からすべてのフィールドが定義されていますが、標準 Opportunity では自分で追加したフィールドとマッピングを漏れなく設定する必要があります。GitHub で公開されている Fields and Standard Values の仕様書と突き合わせて、マッピングの不備を修正したところ解消しました。

 

標準 Opportunity を使う場合は、ACE Opportunity のフィールド定義を参考に、フィールドとマッピングを1件ずつ確認することをおすすめします。

 

おわりに

 

今回は、AWS Partner CRM Connector で実際に送信・受信を試す中で踏んだハマりどころをまとめました。

 

em dash の文字コード不一致はパッケージ側のバグですし、ビジネスバリデーションの依存関係はドキュメントに網羅されていません。個人的に一番つらかったのは、1つのエラーを直すと別のエラーが出てくるモグラ叩き状態が続いたことです。ただ、ここで踏んだ地雷は一度潰してしまえば再発しないので、最初の1回を乗り越えれば運用は安定します。

 

次回は運用編として、同期機能の使い分けと商談の提出フローについて書いていきます。

 

岩間(@iwm_gnbr)でした。

この記事が気に入ったら
いいね ! しよう

Twitter で

【採用情報】一緒に働く仲間を募集しています

採用情報
ページトップへ