tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:商談フェーズとレコードタイプの関係

商談はフェーズ管理を正しく整理、設定することでユーザが次に何をすればいいかを可視化することができます。

f:id:tyoshikawa1106:20190120191640p:plain


フェーズを設定するとフェーズごとに入力フォームのレイアウトを切り替えたくなるかもしれません。後半のフェーズに関する項目に値を入力するときに下にスクロールする手間が発生するためです。また、現在のフェーズで入力してほしい項目を上に持ってくることでユーザがどこで入力すればいいかで悩むことがなくなります。
f:id:tyoshikawa1106:20190120192125p:plain


上記要望を簡単に実現する方法としてフェーズごとにレコードタイプを用意する方法が思いつくかもしれません。確かに1フェーズ1レコードタイプとすることでそれぞれ専用のページレイアウトを割り当てることができます。ですがこの方法は長期的に運用していく上でトラブルの原因になると思います。


わかりやすい部分でパスの設定があります。パスは「1つのレコードタイプに1つのパス」という構成で成り立ちます。もしフェーズごとにレコードタイプを用意した場合、レコードタイプの数だけパスを用意する必要が出てくることになります。コピーや一括更新は行えないため、成功へのガイダンスのメッセージや表示項目を無駄に多く登録する必要が発生してメンテナンスしずらい組織となります。
f:id:tyoshikawa1106:20190120193534p:plain


このパス設定への影響だけでもフェーズごとにレコードタイプを用意するのはデメリットの方が大きいと思います。また、本来レコードタイプはデータの種別を分別するためのものです。例えば法人向けのビジネスの会社ということで下記のようにフェーズ設定を行ったとします。

法人向け商談
  • フェーズA
  • フェーズB
  • フェーズC
  • フェーズD
  • フェーズE


上記設定で運用を開始したあとに個人向けの商談管理が必要になった場合、通常であれば法人/個人の2つのレコードタイプを用意すれば済みましたが、フェーズごとにレコードタイプを用意しているとこうなります。

個人向け商談
  • フェーズF
  • フェーズG
  • フェーズH
  • フェーズI
  • フェーズJ


はじめ5個あったレコードタイプが、一気にレコードタイプが10個に増えました。レコードタイプが増えれば増えるほどページレイアウト設定やパス設定を行う際に作業する箇所が多くなるので、ちょっと修正でも無駄に作業時間が多く発生してしまいます。


レコードタイプは法人/個人など大きな括りで用意するようにして、フェーズごとに用意するというのは避けた方が良いと思います。

フェーズごとにレイアウトを分けたい時の対応方法

上記のとおりレコードタイプを用意して対応するのはデメリットの方が大きいです。そのため別の方法が必要になりますが、標準機能のみでの対応はおそらくムリだと思います。こういう場合はVisualforceページ(もしくはLightningコンポーネント)を開発して対応することで結果的にメンテナンス性を損なわずに実現できると思います。