JiraにCRM(顧客関係管理)の基本機能を実装する

この投稿は Atlassian Advent Calendar 2019 の3日目です。通常は、IoTやAIとJiraを連携させるネタで、デモやったりQiitaの記事にしたり、イベントで発表したりしています。

# 対象
Jiraのカスタマイズ経験がある方。

# Jiraで顧客関係管理
顧客関係管理、3文字略称で言うところの「CRM」といえば、SalesforceやSugarCRM、SuiteCRM、F-RevoCRM、Mautic(どっちかというとMA)など有名どころが多数あります。これらは多数の機能がありますが、CRMの基本機能と言えば、下記の4つです。

| 機能                  |  概要                     | メモ　                          |
|:----------------------|:---------------------------------|:--------------------------------|
| 取引先        　　     | 会社や団体などの組織情報が入ります。| アカウントとも言います。          |
| 取引先担当者  　        | 名刺情報。人の情報はこちら。       | コンタクトとも言います。 |
| 案件　　　　  　        | 商談、いわゆる案件情報が入ります。 | オポチュニティとも言います。 |
| ToDo　　　　  　      | 上記の「取引先」や「取引先担当者」「案件」に関する作業などを記録します。 | 日報や週報、議事録などに使用します。|

## Jiraのプロジェクト名
Jiraの画面で、「プロジェクトを作成」を実行し、次のように設定します。

| テンプレート                | 名前        | キー　 | プロジェクトリーダー |
|:---------------------------|:----------- |:----- |:------------------ |
| カンバンソフトウェア開発     | 顧客関係管理 | CRM   | Administrator　     |


## 機能を課題タイプにマッピングと課題タイプの作成
Jiraに実装するにあたり、CRMの基本機能が、どの課題タイプに該当するか検討します。

| 機能                  |  課題タイプ | メモ　                                      | 課題タイプスキーム             |
|:----------------------|:-----------|:-------------------------------------------|:-----------------------------|
| 取引先        　　     | エピック    | CRMにおける全ての情報のトップは、取引先情報。 | CRM: カンバン課題タイプスキーム |
| 取引先担当者  　       | 独自作成     | 「標準課題タイプ」で作成。例 取引先担当者。  | CRM: カンバン課題タイプスキーム |
| 案件　　　　  　       | 独自作成     | 「標準課題タイプ」で作成。例 案件。  | CRM: カンバン課題タイプスキーム |
| ToDo　　　　  　      | サブタスク    | 日報や週報、議事録などに使用します。        | CRM: カンバン課題タイプスキーム |

Jira上での設定画面では、下図のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/92f430ca-507e-59ec-f274-f92b3acfa8b4.png)

## 各画面の構成
各課題タイプに紐づく画面の項目(フィールド)について、検討していきます。最低限必要なフィールドを実装し、あとは必要に応じて追加することにしましょう。

### 取引先情報画面
「取引先」機能の画面名は、「取引先情報画面」として画面を追加します。必要なフィールドは、最低限のものとして、下記を用意し、追加した画面に配置します。
カスタムフィールドのデータ型は、たとえば、都道府県を選択式にしても良いですし、各事業に合わせて選んでください。

| フィールド名  |  種別                  | カスタムフィールドデータ型 |　概要                 |
|:-------------|:----------------------|:-------------------------|:----------------------|
|エピック名     |システムフィールド(標準)|　                         | 会社名　　　　　        |
|要約           |システムフィールド(標準)|                          | 略称        　　        |
|報告者         |システムフィールド(標準)|                          | Jiraに登録したユーザー名 |
|担当者         |システムフィールド(標準)|                          | 担当営業(要Jiraユーザー) |
|説明           |システムフィールド(標準)|                          | 主力ビジネス情報など     |
|添付ファイル    |システムフィールド(標準)|                          | アカウントプランなど     |
|郵便番号        |カスタムフィールド     | テキストフィールド(1行)    | 
|都道府県        |カスタムフィールド     | テキストフィールド(1行)    |
|市区町村        |カスタムフィールド     | テキストフィールド(1行)    |
|町名番地        |カスタムフィールド     | テキストフィールド(1行)    | 
|代表電話番号    |カスタムフィールド     |  テキストフィールド(1行)    |

画面の設定としては、下図のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/4ca81f48-81ba-d75c-3629-ebc2da9225c9.png)


### 取引先担当者情報画面
「取引先担当者」機能の画面名は、「取引先担当者情報画面」として画面を追加します。必要なフィールドは、最低限のものとして、下記を用意し、追加した画面に配置します。

| フィールド名  |  種別                  | カスタムフィールドデータ型 |　概要                   |
|:-------------|:----------------------|:-------------------------|:------------------------|
|要約          |システムフィールド(標準) |                          | 担当者名 例 大手 一郎      |
|報告者        |システムフィールド(標準) |                          | Jiraに登録したユーザー名    |
|説明         　|システムフィールド(標準)|                          | 趣味・嗜好など            |
|添付ファイル   |システムフィールド(標準) |                          | スキャンした名刺の画像データ|
|エピックリンク  |システムフィールド(標準) |                          | 取引先名  |
|役職　　       |カスタムフィールド      | テキストフィールド(1行)    | ヘルプデスク所長           |
|意思決定者　　 |カスタムフィールド       | ラジオボタン         　　 | はい or いいえ            |
|Twitterアカウント|カスタムフィールド      | URLフィールド　　　　　　　| ネット上の発言をチェックするために使用。例 https://twitter.com/kolinz |

画面の設定としては、下図のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/32df656e-903d-4194-9ed7-8dbe619f920e.png)

### 案件情報画面
「案件」機能の画面名は、「案件情報画面」として画面を追加します。必要なフィールドは、最低限のものとして、下記を用意し、追加した画面に配置します。

| フィールド名  |  種別                  | カスタムフィールドデータ型 |　概要                   |
|:-------------|:----------------------|:-------------------------|:------------------------|
|要約          |システムフィールド(標準) |                          | 例 ブロックチェーンによる資産のトレーサビリティシステム導入     |
|報告者        |システムフィールド(標準) |                          | Jiraに登録したユーザー名  |
|担当者        |システムフィールド(標準) |                          | 担当営業(要Jiraユーザー)  |
|説明         　|システムフィールド(標準)|                          | 例 ブロックチェーンによる資産管理サービスを導入したいと考えている。 |
|添付ファイル   |システムフィールド(標準) |                          | 提案書や見積書など |
|エピックリンク  |システムフィールド(標準) |                          | 取引先名  |
|売上見込み(円)　　 |カスタムフィールド      | 数値フィールド    |  10,000,000         |
|売上金額(円)　　   |カスタムフィールド      | 数値フィールド     | 10,000,000          |

画面の設定としては、下図のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/881e503c-0942-fb52-49d0-fcd53ee78a3b.png)


### ToDo画面
プロジェクト作成時に生成される「カンバン既定課題画面」を流用します。必要に応じてフィールドを調整してたり、フィールドを追加してください。
画面の設定としては、下図のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/9a683238-6436-78a6-dfe2-abf76589487b.png)

## 画面スキームの作成
「画面スキームを追加」から、作成した各画面に対応する画面スキームを作成します。

| 画面スキームの名前           | 既定の画面名   |
|:---------------------------|:------------- |
| 取引先情報画面スキーム     　| 取引先情報画面 |
| 取引先担当者情報画面スキーム | 取引先担当者情報画面 |
| 案件情報画面スキーム | 案件情報画面 |

下図のように画面スキームを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/8993e9e8-1315-9b80-25e6-4c35ed4b54fb.png)

作成した画面スキームの設定は、既定のまま使用します。必要に応じてカスタマイズします。

## 課題タイプ画面スキームの設定
プロジェクト作成時に生成される「CRM:カンバン課題タイプ画面スキーム」を流用し、作成した画面スキームと、各課題タイプを紐づけます。これにより、実際にJiraにデータを登録できるようになります。
課題タイプ画面スキームの設定画面で、「CRM:カンバン課題タイプ画面スキーム」をクリックします。
「課題タイプを画面スキームに関連付け」をクリックし、各画面スキームと課題タイプを紐づけます。

下図のように紐づけてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/8c6c604c-d0bf-9af4-5b91-342859b67cb7.png)

## ワークフローの利用
Jiraでは「課題タイプ」別にワークフローを定義できます。ここでは、案件情報の進捗をわかりやすくするために、ワークフローを活用します。

### ワークフローの追加
ワークフローの設定画面にアクセスし、「ワークフローを追加」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/dc527292-4d01-3e7e-2f70-d6f9c1895cde.png)

「ワークフローを追加」画面で、名前を「Opportunity Workflow」として追加します。
### Opportunity Workflowの設定
「＋ステータスを追加」から、下図のようにステータスを作成します。ステータスとステータスのカテゴリは次のように設定しています。また、ステータスとステータスの間を線で結び、トランジションを作成します。成約、失注、ペンディングの3つのトランジションを作成します。

| ステータス名               | カテゴリ    | すべてのステータスからトランジションすることを許可する　 | トランジション作成 | 
|:---------------------------|:----------- |:----- |:----- |
| OPEN     | ToDo |
| 初回コンタクト     | 進行中 | チェック   |
| 詳細ヒアリング     | 進行中 | チェック   |
| 提案     | 進行中 | チェック   |
| 審議     | 進行中 | チェック   |
| 受注     | 完了 |    | 成約   |
| ロスト     | 完了 |    | 失注   |
| ペンディング | 完了 |    | ペンディング   |

画面設定では、下図のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/fc2721a4-aea2-ba63-335d-0f406b6ffd26.png)

### ワークフロースキームの設定
「ワークフロースキーム」の設定画面にアクセスし、「ワークフロースキームを追加」をクリックします。追加するワークフロースキームの名前は、「CRM Workflow Scheme」とします。

「CRM Workflow Scheme」の設定画面で、「ワークフローの追加」をクリックし、「案件情報」の課題タイプと、先ほど作成した「Opportunity Workflow」を紐づけます。

画面では、下図のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/f07e3d2b-5b57-277c-052a-18c2dfdd8750.png)

### ワークフロースキームの切り替え
「顧客関係管理」のプロジェクト設定画面に移動し、画面左側の「ワークフロー」をクリックします。画面右側の「スキームの切り替え」から、
「ワークフロースキームをプロジェクトに関連付ける」にて、作成した「CRM Workflow Scheme」を選び、「関連付け」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/4c7cc524-87f5-1ade-3369-fc718eefe608.png)

プロジェクト設定画面で、下図のようになれば切り替えが完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/98693907-5504-a934-78a7-e2dee65a098d.png)

# カンバンボードのカスタマイズ
プロジェクト作成時に生成される「CRMボード」を流用します。画面上部の「ボード」→「CRMボード」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/e8fe5417-24da-4a12-92b4-8854a7d15d2c.png)

次に、画面右上の「ボード」→「ビルダー」の順にクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/371be985-d66c-102c-259a-49b30e3557a1.png)
## 設定:一般
ビルダー画面で、画面左側の「一般」をクリックします。「CRMボードのフィルター」の下部に表示されている「フィルタクエリを編集」をクリックし、「CRMボードのフィルター」の「タイプ」で「案件」を指定、「保存」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/3ebb3451-5f2a-08a7-163b-70ccbf16eabb.png)

ボードのビルダー画面の「一般」に戻り、「これより古い完了済みの課題を非表示にする」を、「すべて表示」に変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/f04c3bba-22a3-0ddb-2956-b83b95a2f3b1.png)

## 設定:列
ビルダー画面で、画面左側の「列」をクリックし、下図のようにボードの列を定義します。使用しない「ステータス(ワークフローのステータス)」は、画面右側の灰色の場所(マッピングされていないステータス)に退避します。
画像をクリックし拡大表示しますと見やすいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/421937b0-24b4-2cf1-adf9-f80a96635b0c.png)

## 設定:スイムレーン
ビルダー画面で、画面左側の「スイムレーン」をクリックします。直近4週間以内の案件を優先して表示するように、スイムレーンを定義します。
画像をクリックし拡大表示しますと見やすいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/c99d37a8-d53a-acd3-555d-3283e9a29fa2.png)

## 設定:クイックフィルター
ビルダー画面で、画面左側の「クイックフィルター」をクリックします。
追加するクイックフィルターは、次のとおりです。

| クイックフィルター名            | JQL        | 説明　 |
|:---------------------------|:----------- |:----- |
| 自分が登録した案件     | reporter = currentUser()  | 現在のユーザーが登録した案件を表示します。   |

「Add」ボタンをクリックして追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/e3666fe2-fb83-3fd4-91b3-06ed3beedf58.png)

画面右上の「ボードに戻る」をクリックします。

# サンプルデータの登録
画面上部の「作成」をクリックし、下記の順に情報を登録します。

| 順番            | プロジェクト        | 課題タイプ　 | エピックリンクの選択 | 
|:---------------------------|:----------- |:----- |:----- |
| 1 | 顧客関係管理(CRM) | エピック　|　　|
| 2 | 顧客関係管理(CRM) | 取引先担当者　|　作成済みの「取引先」を選択 |
| 3 | 顧客関係管理(CRM) | 案件　|　作成済みの「取引先」を選択 |

## 作成例
取引先情報
「取引先担当者」と「案件」で、エピックリンクにて「取引先」を指定することで、各取引先に関連する「取引先担当者」情報や「案件」情報を一覧で確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/5cac4abe-4f00-b1b2-1bcd-350782c17903.png)

取引先担当者
「エピックリンク」に「取引先」を指定することで、「取引先」情報に紐づきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/258ca87b-eb66-a588-ba72-80b7bf21e267.png)

案件
「エピックリンク」に「取引先」を指定することで、「取引先」情報に紐づきます。また、画面右上の「初回コンタクト」などのワークフローステータスを選択すると、カンバンボードにも反映されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/fcd2372a-89d1-83b6-66f5-091a7c385c03.png)

サブタスク
登録しました「取引先」「取引先担当者」「案件」について、画面で「その他」→「サブタスクを作成」の操作を行い、サブタスクとして、訪問やデモなど、CRMにおけるToDoを登録します。
例 「案件」画面で、「サブタスクを作成」を実行すると、サブタスクの欄に表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/008cb801-aa5f-177e-0cb3-1e52d361c02e.png)

カンバンボード
画面上部の「ボード」→「CRMボード」をクリックします。登録済みの「案件」が、ワークフローステータスに合わせて表示されます。
画像をクリックし拡大表示しますと見やすいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/7302277f-561e-2d56-01fb-519d170d28b0.png)

# ワークフローのトランジション設定
サンプルデータを登録することで、動きが見えました。最後に、ワークフロー「Opportunity Workflow」を編集し、「成約」「失注」「ペンディング」「すべて」のトランジション設定を変更し、それぞれのトランジション実行時に、Jiraの「解決状況」に「完了」などの値を事後操作でセットするようにします。

## 事後操作の追加
ワークフロー「Opportunity Workflow」の編集画面にて、下の表にもとづき事後操作を設定します。
たとえば、「成約」のトランジション設定の場合、ワークフロー「Opportunity Workflow」の編集画面 → 「成約」をクリック → 事後操作 → 事後操作を追加 の順にクリックします。

「事後操作 をトランジションに追加」にて、「課題フィールドの更新」を選び、「追加」をクリックします。「課題フィールド」に「解決状況」を選び、「フィールド値」に「完了」を指定します。「追加」をクリックしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/91cfd271-101f-e1c8-2dd0-e81c19323dc0.png)

「発行」をクリックして有効化します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41414/e4010124-781a-8a87-bfcf-7d5c9a2e5e29.png)

同様に、「失注」「ペンディング」についても事後操作を設定します。

| トランジション名            | オプション        | 事後操作内容　 | 課題フィールド | フィールド値 |
|:---------------------------|:----------- |:----- |:----- |:----- |
| 成約 | 事後操作 | 課題フィールドの更新　|　解決状況　　| 完了 |
| 失注 | 事後操作 | 課題フィールドの更新　|　解決状況　　| 拒否 |
| ペンディング | 事後操作 | 課題フィールドの更新　|　解決状況　　| 不実行 |
| すべて | 事後操作 | 課題フィールドの更新　|　解決状況　　| なし |


# 追加カスタマイズポイント
ここまで紹介しました操作について、幾つかカスタマイズポイントがあります。

- 権限スキームを用いて、顧客関係管理で課題作成できる人や閲覧できる人を制限する。
    - 個人情報を扱いますので、なるべく実施した方が良いです。
- ワークフローのステータス変更について、課長職以上など特定の人にしか承認させない。
- カンバンボードを、利用者に合わせてカスタマイズ
- カスタムフィールドの追加など

# まとめ
Jiraを非開発業務以外に使うことを考え、業務システムの大定番である顧客関係管理を実施してみました。Jira特有の操作や用語がありますが、なんとなーく出来そうくらいに感じていただけたかもしれません。

冒頭の著名なCRMツールは、専門だけありまして、メール一斉配信時にお客様の属性や閲覧コンテンツに合わせてメール本文を１つ１つ変えるなど出来ますので餅は餅屋というべきですが、そこまで必要ないのであれば、Jiraでアレコレ作るのは便利かと思います。

クラウド版でFreeプランが出ておりますし、よいJiraライフを！