Zoho CRM組織間のデータ同期方法

Zoho CRM組織間のデータ同期方法

お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。

要件の概要

ユーザーは 2 つの Zoho CRM 組織間でレコードを同期し、Org A で作成または更新されたデータが自動的に Org B に反映されるようにしたいと考えています。つまり、Zoho CRM の Org A でデータが追加または変更されるたびに、同じ変更内容が Org B に同期される必要があります。

ユースケース

企業が、地域ごとの業務、事業部ごとの運用、外部パートナーとの連携などの理由で、複数の Zoho CRM 組織を運用しているケースがあります。このような場合、各組織間でデータを同期することで、チーム間のデータ整合性、コラボレーション、可視性を確保できます。
  1. ビジネスでの利用例
グローバル組織 + リージョナル組織
-> ある企業では、全社レポート用のグローバル Zoho CRM 組織と、各地域の営業チーム向けの複数のリージョナル Zoho CRM 組織を運用しています。
-> リージョナル組織で獲得した見込み客は、集中管理のためにグローバル組織へ同期する必要があります。
-> グローバル組織からは、「有望見込み客」や「受注済み案件」などの更新情報をリージョナル組織へ反映させることができます。

親会社 + 子会社
-> 親会社は、法人顧客アカウントやエンタープライズ案件を 1 つの組織で管理します。
-> 子会社は、それぞれの組織でローカル営業を管理します。
-> 同期により、親会社は子会社の営業進捗を可視化できます。

ベンダー–パートナー連携
-> あるベンダーは 1 つの Zoho CRM 組織を使用し、販売代理店/パートナーは別の組織を使用します。
-> 同期により、パートナーは案件/商談情報をベンダー側の組織へ送信し、承認、出荷、請求処理などを依頼できます。
-> ベンダー側の組織から、製品情報や価格情報の更新をパートナーの組織へ反映させることもできます。
  1. これを直接実現する際の現在の課題

現時点では、2 つの Zoho CRM アカウント間に直接連携を設定するための機能はありません。ユーザーは手動でエクスポート/インポートを行うことはできますが、継続的に手作業が必要になります。一方で、ユーザーは手作業なしでレコードを自動同期したいと考えています。

解決策 - ステップバイステップ実装ガイド

ユーザーは、以下のいずれかの方法を選択して、2 つの Zoho CRM 組織間でレコードを同期できます。

A. メールパーサー方式を使用する

以下では、メール設定を使用してこの仕組みを実現する方法を詳しく説明します。
  1. 設定手順

1. まず、移行先アカウント(CRM Org B)で「メールパーサーID」を生成し、「承認済みメールアドレス」を追加する必要があります。メールパーサーIDの生成と承認済みメールアドレスの追加については、こちらのヘルプを参照してください。

2. 次に、元アカウント(CRM Org A)の見込み客タブ用に、差し込みフィールドを含むメールテンプレートを作成します。テンプレートは必ずプレーンテキスト形式で作成してください。


3. 「設定 >> チャネル >> メール >> メール設定 >> 組織のメール」から、組織のメールにメールアドレスを追加します。追加後、そのメールアドレスを検証・認証してください。ここでは、移行先アカウントのメールパーサーで承認済みメールアドレスとして追加したものと同じメールアドレスを登録する必要があります。
Info
「組織のメール」の詳細については、次のヘルプリンクを参照してください。


4. 「設定 >> 自動化 >> アクション >> メール通知 >> 新しいメール通知を作成」でメール通知を作成し、そのメール通知を追加して、対象モジュールとして見込み客タブを選択します。

次に、宛先項目にメールパーサーIDを入力し、先ほど作成したメールテンプレートを選択します。その後、先ほど追加した組織のメールアドレスを送信元として選択し、メール通知を保存します。


Notes
メモ: すでに Zoho CRM Org 1 で認証済みのメールアドレスを使用している場合は、そのメールアドレスを Org 2 のメールパーサーでも承認済みメールアドレスとしてそのまま使用できます。

たとえば、CRM Org 1 で example@abc.xyz を組織のメールアドレスとして追加し、ドメイン認証も完了しているとします。この場合、同じメールアドレス(example@abc.xyz)を、CRM Org 2 のメールパーサー設定で承認済みメールアドレスとして使用できます。

一方、Zoho CRM Org 1 で追加したメールアドレスが認証されていない場合は、Org 2 のメールパーサーでは別の承認済みメールアドレスを使用する必要があります。

たとえば、CRM Org 1 で example@abc.xyz を組織のメールアドレスとして追加したものの、ドメイン認証が完了していないとします。この場合、以下の手順で正しいメールアドレスを取得し、そのアドレスをメールパーサーの承認済みメールアドレスとして追加します。

正しいメールアドレスを取得する手順:
1. メール通知アクションの「宛先」項目に、ダミーのメールアドレスを追加します。
2. そのメール通知アクションをワークフローに追加します。
3. ワークフローを一度トリガーし、そのダミーのメールアドレス宛てにメールを送信します。
4. メールボックスでそのメールを開くと、差出人メールアドレスが example.abc.xyz@viazohocrm.com の形式で表示されます。
5. この差出人メールアドレスをコピーし、Org 2 のメールパーサーで承認済みメールアドレスとして追加します。

設定が完了すると、メールはメールパーサーで正確に受信・処理されるようになります。

この方法は、データセンター(DC)が異なる場合でも有効です。例: IN DC の CRM アカウント1 と US DC の CRM アカウント2 間でも利用できます。

5. 次に、見込み客タブ用のワークフローを作成し、トリガーを「作成または編集時」に設定します。ワークフローの対象をすべての見込み客レコードとし、アクションで先ほどパーサーIDを設定したメール通知を選択します。その後、ワークフローを保存します。


6. その後、CRM Org A の見込み客タブでテスト用のデータを作成します。これにより、「Org B」でパーサールールを作成できるようになります。見込み客が作成されると、ワークフローがトリガーされ、見込み客データから差し込まれた情報を含むメールがメールパーサーID宛てに送信されます。

7. 「CRM Org B」のメールパーサー >> メールに移動します。パースステータスが「ルールに一致しません」と表示されているメールが見つかります。「データを更新」のチェックボックスを必ずオンにしてください。これにより、「Org A」でデータが更新された際に、「Org B」のデータも同様に更新されます。

Info
パーサールールの作成手順の詳細については、次のヘルプリンクを参照してください。
パーサールールの設定が完了すると、すぐに運用を開始できます。「Org A」で見込み客データを作成または編集すると、そのデータはメールパーサー経由で「Org B」と同期されます。

Notes
メモ: 複数のタブからメールパーサー経由でレコードを同期する場合は、各タブおよび各レイアウトごとに同じ設定を再度構成する必要があります。
  1. 動作イメージ - スクリーンショット

CRM Org 1 のデータ
  

メールパーサー - 作成されたデータ


メールパーサー - 更新されたデータ


B. Zoho Flow を使用する方法

Zoho Flow を使用すると、Org A から Org B へデータを効率的に同期できます。ユーザーは、ある Zoho CRM インスタンス(Org A)でトリガーを設定し、別の Zoho CRM インスタンス(Org B)でアクションを実行させることができます。

CRM1 アカウントの所有者が「ユーザー A」、CRM2 アカウントの所有者が「ユーザー B」であるケースを考えます。このフローを作成するには、Zoho Flow アカウントが 2 つ必要です。1 つは「ユーザー A」用、もう 1 つは「ユーザー B」用です。
  1. 設定手順

Step1 - Zoho Flow アカウント(ユーザー B)にログインし、アカウントに「ユーザー A」をメンバーとして追加します。

1. [Settings] > [Members] に移動します。
2. 右上の[Add Member]をクリックします。
3. 新しいメンバーの名前、メールアドレス、ロールを入力し、[Send]をクリックして招待します。

(ユーザー「A」が招待を承諾すると、Zoho Flow 組織のメンバーになります。)
 
Step2 - 自分のアカウント(ユーザー B)から、Zoho Flow に CRM2 アカウントを接続します。

1. [Settings] > [Connections] に移動します。
2. [Create connection]をクリックします。
3. 表示される設定ウィンドウで Zoho CRM を選択し、[Next]をクリックします。
4. 接続名(UserB - Org2 など)を入力し、[Authorize]をクリックします。
 
CRM2 アカウント(自分のアカウント - ユーザー B)が Zoho Flow に接続されました。 接続が確立されたら[Share]をクリックします。これで、この接続を他のユーザーも利用できるようになります。
  
Step3 - 「ユーザー A」の Zoho Flow アカウントにログインします。右上に、A が所属している組織の一覧が表示されます。そこから、先ほど招待した組織を選択します。つまり、ユーザー A を招待した Org B に切り替えます。


 
Step4 - 同じ組織内で、「ユーザー A」のアカウントから CRM1 を Zoho Flow に接続します(Step2 と同じ手順)。接続名(UserA - OrgA など)を入力し、[Authorize]をクリックします。
 
Step5 - この組織(Org B)で CRM1 アカウントを接続し、接続が確立されたら、[Share]をクリックします。これで、この接続も他のユーザーが利用できるようになります。

  1. CRM1 から CRM2 へデータを同期する方法

両方の Zoho CRM 組織の接続が確立されている Zoho Flow の「Org B」を開き、新しいフローを作成します。

1. トリガーとして Zoho CRM を選択します。
2. 接続のドロップダウンから、CRM1 の接続(UserA - OrgA)を選択します。
3. 必要な Zoho CRM アクションを追加し、CRM2 の接続(UserB - OrgB)を選択します。
4. CRM1 から CRM2 に取得したい各種データ項目をマッピングします。
5. フローを保存し、有効化します。
 
このフローにより、CRM1 から CRM2 へデータが自動的に同期されます。
  1. CRM2 から CRM1 へデータを同期する方法

1. トリガーとして Zoho CRM を選択します。
2. 接続のドロップダウンから、CRM2 の接続(UserB - OrgB)を選択します。
3. 必要な Zoho CRM アクションを追加し、CRM1 の接続(UserA - OrgA)を選択します。
4. CRM2 から CRM1 に取得したい各種データ項目をマッピングします。
5. フローを保存し、有効化します。

このフローにより、CRM2 から CRM1 へデータが自動的に転送されます。

フロー内での CRM トリガーとアクションの例

  1. 動作デモ - スクリーンキャスト


Idea
わかりやすくするため、この例では共通タブのエントリーレベルで、作成/更新用のトリガーとアクションを直接使用しています。ユーザーは、ソース側の CRM 組織で一意の項目を使って既存データを検索する「カスタム関数」ブロックと、宛先側の CRM 組織でデータを作成または更新するかを判定する「Decision」ブロックを組み合わせて使用することもできます。
Notes
メモ - この方法は、同じデータセンター(DC)内にある CRM 組織に対してのみ使用できます。現時点では DC をまたいだユーザーの利用をサポートしていないため、別の DC に属するユーザーを Flow アカウントに招待することはできません。

C. Self-Client メソッド(API 経由)の利用

ユーザーは Self-Client メソッドを使用して、別の CRM 組織のレコードを作成/更新するために CRM API を利用できます。これにより、2 つの CRM 組織間でシームレスな連携を構成できます。
  1. 異なるデータセンター間で Zoho CRM と連携する方法

-> この例では、Zoho CRM アカウントが 2 つあります。1 つは US DC、もう 1 つは IN DC にあります。US DC の CRM と連携するには、US DC で Zoho CRM API Access 権限を持つユーザーが、Self Client メソッドを使用して Grant Token を生成する必要があります。

-> Grant Token を使用して、ユーザーは Access Token と Refresh Token を生成できます。これらの Access Token と Refresh Token が、US DC の CRM アカウントと連携する際に使用されるトークンです。

-> Access Token は対象の CRM アカウントと通信するためのキーであり、Refresh Token は新しい Access Token を生成するために使用されます。なお、Access Token は 1 時間で有効期限が切れます。
  1. 権限と利用可能条件

Info
1) ユーザーのプロファイルでZoho CRM API Accessが有効になっている必要があります。
2) ユーザーのプロファイルでManage Automation が有効になっている必要があります。
  1. US DC の Zoho CRM での事前準備
    1) Grant Token(認可コード)
    2) Access Token(アクセストークン)
    3) Refresh Token(リフレッシュトークン)

Notes
OAuth 認証に関する概要およびすべての手順については、このヘルプリンクを参照してください。Grant、Access、Refresh 各トークンを含め、Zoho における認証の仕組みが詳細に説明されています。

      設定手順

手順 1US DC の CRM アカウントで Zoho CRM API Access 権限を持つユーザーは、Zoho Developer コンソールに移動し、セルフクライアント方式で Grant Token を生成します。

手順 2:クライアントタイプとして Self Client を選択します。

手順 3:必要な scope、時間(10 分)および scope の説明を入力します。

手順 4:「作成」をクリックすると、Grant Token が表示されます。

手順 5:Postman や Insomnia などの他の API 実行ツールを使用して Access Token と Refresh Token を生成する、以下で共有している code1 を使用して、CRM から Access Token と Refresh Token を生成することができます。

Notes
Grant Token を使用して 10 分以内に Access Token と Refresh Token を生成してください。 Grant Token の有効期限は最大 10 分のみです。
  1. Deluge スクリプトのサンプル - Code1:
  1. accesstokenmp = Map();
  2. accesstokenmp.put('grant_type', 'authorization_code');
  3. accesstokenmp.put('client_id', '1000.CHZ74KIIK1LFMZJ7K6073ZSD9TQ8RT');
  4. accesstokenmp.put('client_secret', '616dcf2104dc5e6a5e5921b9ad828b20308be5547c');
  5. accesstokenmp.put('code', '1000.fa1d4da1df80805c1a9a0dffe3e76af3.3898323428c16839635fb42c082cd300');
  6. response = invokeUrl [
  7. url: 'https://accounts.zoho.com/oauth/v2/token'
  8. type: POST
  9. parameters: accesstokenmp
  10. ];
  1. Grant Token の動画
  1. Access Token と Refresh Token を生成するさまざまな方法

    1) 開発ツール(例:Postman、Insomnia)
    2) Zoho Deluge Invoke URL タスク
      -> 開発ツール(Postman、Insomnia など)を使用して Access Token を生成する



-> Zoho Deluge Invoke URL タスクを使用して Access Token を生成する


  1. Zoho CRM IN DC でカスタムソリューションをデプロイする手順
IN DC の CRM アカウントで、必要な詳細を入力してワークフローを作成します。

データ作成時にトリガーを設定し、必要に応じて条件を指定して、ワークフローのインスタントアクションに以下の code2を使用します。


-> Deluge スクリプトのサンプル - Code2:
  1. void automation.TBSolution()
  2. {
  3. refreshtoken = Map();
  4. refreshtoken.put('refresh_token', '1000.c10f1746037754011ed558e92f558f70.6a1c309c4c3715efca7************');
  5. refreshtoken.put('client_id', '1000.O466EKV1NQT0ZKHATWA***********');
  6. refreshtoken.put('client_secret', '1b74110de0dfc1156e00a3003037a2471*********');
  7. refreshtoken.put('grant_type', 'refresh_token');
  8. // アクセストークンを更新
  9. response = invokeUrl [
  10. url: 'https://accounts.zoho.com/oauth/v2/token'
  11. type: POST
  12. parameters: refreshtoken
  13. ];
  14. accesstoken = response.get('access_token');
  15. mp = Map();
  16. datamp = Map();
  17. datalist = List();
  18. mp.put('Last_Name', name);
  19. datalist.add(mp);
  20. datamp.put('data', datalist);
  21. headersMap = Map();
  22. headersMap.put('Authorization','Zoho-oauthtoken ' +accesstoken);
  23. // IN DC で新しい見込み客レコードが作成されるたびに、US DC の CRM アカウントにも見込み客レコードを作成
  24. response1 = invokeurl
  25. [
  26. url :'https://www.zohoapis.com/crm/v7/Leads'
  27. type :POST
  28. parameters:datamp.toString()
  29. headers:headersMap
  30. ];
  31. }
  1. 動作デモ - スクリーンキャスト


D. サーバーレス関数の利用

ユーザーは OrgB にサーバーレス関数を作成できます。作成したサーバーレス関数の API キーを使用して、OrgA からワークフロー設定を使ってその関数を呼び出し、データペイロードを関数に渡して、別の Org と同期できます。この連携設定により、ある CRM Org から別の CRM Org へ、レコードをシームレスに作成または更新できます。

Info
次のカスタム関数ソリューション - 記事を参照し、同様の設定手順を含む詳細な概要をご確認ください。


Quote
カスタムソリューション作成者

メールパーサー方式 - Harish K
Flow 方式 - Myself [Joshi]
Self Client 方式 - Hemanth Kumar L M

さらにご不明な点がありましたら、partner-support@zohocorp.comまでお気軽にお問い合わせください。

Notes
加えて、ヨーロッパおよび英国のパートナーの皆さまは、partner-support@eu.zohocorp.comまでご連絡くださいますようお願いいたします。