(難所?)Salesforceにおける"活動"の概念や機能を整理してみた

こんにちは。リゾルバの[ 佐伯(yonyonsaeki) ](https://mobile.twitter.com/yonyonsaeki)です。
Twitterの方で、たまにSalesforceのややこしい部分をまとめたりしてます。
良ければフォローお願いします。

Salesforce Advent Calendar 2021の3日目を担当します。
昨日登録して今日書いてるので、ちょっとピンポイントな内容になりますがご了承ください。


#Salesforceにおける"活動"とは
Salesforceは、顧客管理のためのシステム。
取引先情報を軸として、担当者の名刺情報、商談の情報などを管理するとともに、

商談を発掘する前の情報提供の活動や、
商談中の訪問やメール/電話のやりとり、
既存顧客からのお問い合わせの対応などなど、

顧客接点におけるさまざまな活動情報を記録することで、顧客対応におけるセルフマネジメント、マネージャによる支援、チーム、後任とのコラボレーションに活用するビジネス要件があります。

そのためには、
**"ただ文字情報として履歴を残すだけ"**でなく、
取引先や商談と関連づけながらCRMのデータベースに保存することで

・注力顧客セグメントへの最終活動からの日数
・フェーズの停滞した商談のネクストアクションの抜け漏れ
・商談獲得目標の先行指標としてのコール件数目標の達成進捗
・・・・

などなど、**より意味のある形でリストを抽出したり、集計データとして可視化し活用**していける必要があります。

CRMにおける**"活動"の情報や機能を理解することはどうやら大事そうですね**。

#　"活動"にまつわる用語、キーワード
Salesforceの画面を見たり、アドミン向け、開発者向けナレッジを見ていると
**Todo、行動、メール、Event(イベント)、Task(タスク)、カレンダー、活動予定、活動履歴・・・**などなど
沢山の関連しそうなキーワードが出てきて混乱された方も多いかもしれません。

### これ、全部"活動"(Activity)です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391944/d8386082-aa41-2685-2c01-253beca0a2f8.png)

Twitter始めた頃に載せた図を少しきれいにしました。

種類によって、違う呼び名だったり、活動の行われた or 行われる時間軸によって名前が変わるだけで、基本的には活動、という一つの情報の塊だと理解できます。

例えば、
期日やステータスがある活動を**"Todo"**と呼び、
開始日と終了日がはっきりしてるものを**"行動"**と呼んだりします。
タブ画面でいうと、TodoはTodo、行動はカレンダーというタブになります。

ステータスが未完了のTodo(期日が過ぎていても)、未来の行動は**"活動予定"**と呼び、
開始日時を過ぎた行動や完了Todoを**"活動履歴"**と呼びます。
レコード詳細画面で言うとこれが関連リスト上の呼び名です。

タブでいうとTodoとカレンダーとして、Todoと行動が別れており、
各レコード詳細画面の関連リストだと、ステータスや開始日時によって活動予定または活動履歴という分類で表示される、
という形です。

ややこしいですが、**"活動"**は、
色々ひっくるめた活動的な情報をまとめて扱える特別な存在だということです。
活動、という画面がある訳ではないのでそこが割と混乱しやすいところですね。


#活動のデータモデル
![スクリーンショット 2021-12-02 17.46.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391944/a6f92d1c-f9d5-18d5-66f1-b47680e83227.png)

引用：「SOAP API 開発者ガイド　」 ※API Ver 53.0現在
https://developer.salesforce.com/docs/atlas.ja-jp.api.meta/api/sforce_api_erd_activities.htm

この重要な**"活動"**は、システムのデータモデル上こんな感じの位置づけ。
Todoはシステム上ではTask、行動はシステム上ではEvent、と呼びます。
データローダーなどいじってデータのアップロードをしたことある人は分かりますね。

ポイントは2つ
- 活動(赤枠)というTodo/行動をまとめた概念と、TaskとEvent個別の概念がある
- Salesforce内の(ほぼ)あらゆる情報に子として関連する

1点目は自作の図に書いた通りです。"活動"は総称であり、
システム上は物理的に一つの大きな情報の塊であることが示されてます。
それを論理的に区分する形で、Todo、行動があり、その中の種別にメールとか電話とか訪問とかがあります。

Todoや行動、電話やメール、といった単位で個別の情報の箱(テーブル)を分けてしまうと
活動としての総件数や実施済み件数、活動全体における最終接触日時など、ビジネス上の意味あるデータが集計/分析できなくなってしまいます。

2点目は冒頭に書いた通りですが、時系列でしかない日報と異なり、様々なデータに関連づけて記録します。

CRMの用途として、ただ記録するだけでなく、
顧客との営業やサポートの接点活動をより良くマネジメントしていく必要があるため、
取引先や商談や担当者情報など、あらゆる活動対象データを軸として活動の履歴を参照/活用できる必要があります。


このようにSalesforceにおける**"活動"**は、
ただの記録を保管するデータの箱というだけでなく、
ビジネス要件上必要なデータ/UI設計が予め考慮されてデザインされた**特別な機能とデータモデル**になっています。


# 画面で見てみる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391944/bda8e986-8925-be47-e113-22c490a06e34.png)



これがSalesforce標準の活動タイムラインという画面です。
リゾルバという取引先への活動が一覧になっています。

左端にアイコンが並ぶ通り、様々な活動が一つのタイムラインに表現されています。
前述の設計概念やデータモデルによって、このような表現が可能になっています。

この取引先にどんな活動をいつして、
今後何か予定があるのかないのか、未完了のタスクが残ってるのか
非常に分かりやすいですね。



#最後にTips
このSalesforceの活動表示の機能は、データモデルだけでなくUI上の便利機能もあります。

取引先に紐づけて活動を保存するか、
取引先に紐づく商談や、カスタムオブジェクトに紐づけて活動を保存するかなど、
関連づける先に悩む、みたいな場面があると思います。

商談担当者としては、商談画面で前回訪問の記録を残したいけれど、
同じ取引先を担当する別製品の営業にも、その情報を見せてあげたい場合は、取引先画面に書いた方が見やすそうです。


そんな時でも大丈夫。気の利いたUI機能が"活動"には付属しています。


実は先程の画面の、ここ(赤矢印)。
![スクリーンショット 2021-12-02 18.06.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391944/3d092377-6815-e71d-7bc0-56ea8d0650ac.png)

"今後&期限切れ"のセクションに、乗っている活動予定ですが
実は、取引先の商談画面で入力した活動、もう一つは取引先に紐付けたカスタムオブジェクト画面で入力した活動、がまとめて一画面で表示されているんです。

"活動タイムライン"は、
今表示している取引先などの情報に入力した活動、だけでなく
主従関係にある従側(子側)の情報に入力された活動、も集約してくれる機能があります。

これ手作りしようとすると、子側で入力した活動を、
取引先にもコピーして作成する処理をいれたりすることになり、
活動件数が重複してしまったりで不都合です。


# 良いお年を！

明日は弊社取締役の白石が、最近更にアツいSlack関連で何か書くそうです！
お楽しみに！

本日のネタはTwitterで書いたネタから書きましたので元ネタとして貼っておきます。

https://twitter.com/yonyonsaeki/status/1459855599655874563?s=20

https://twitter.com/yonyonsaeki/status/1273464511513497600?s=20