Salesforce Connect でクラウドデータベースや他SaaSアプリケーションのデータを外部オブジェクトとして参照

はじめに

Salesforceには、外部ソースのデータをSalesforceにデータをコピーすることなくSalesforce アプリケーションや外部オブジェクトにリアルタイム統合するSalesforce Connectという機能があります。本記事ではCData ConnectがサポートするクラウドDBや他SaaデータをノーコードでSalesforce Connectの外部オブジェクトから参照する方法をご紹介します。

本記事で実現する内容

本記事では、AWSのデータベースサービスRDS(MySQL)内のデータをSalesforceの外部オブジェクトとしてSalesforceの画面から参照するシナリオでご説明します。

Salesforce Connectは外部データソースの種類としてODataが選択できますので、CData Connect CloudでMySQLのデータをODataアクセス可能とすることで、Salesforceの外部オブジェクトからCData Connect Cloud経由でMySQLのデータにアクセスできるようになります。

なお、弊社ではCData Connect Cloudの機能をセルフホスティング可能なCData Connect Serverも提供しております。CData Connect Serverを利用した同様の手順についてはこちらの記事をご参照ください。

前提となる製品・サービス

手順

CData Connect Cloud 側の設定

CData Connect Cloudの30日間のトライアル取得手順についてはこちらの記事をご覧ください。CData Connect Cloudの管理コンソールにログイン出来ましたら、まずはじめにCData Connect CloudからMySQLへの接続を作成します。

左側のメニューから「Connections」を選択して「+Add Connecton」で接続を追加します。CData Connect Cloudが接続可能なデータソースのアイコンリストが表示されるので本手順ではMySQLと検索してMySQLのアイコンをクリックします。

MySQLへの接続情報をセットしたら「Save&Test」ボタンをクリックします。

「Connection Saved Successfully!」メッセージが表示されれば成功です。Connections一覧にMySQLへの接続が追加されたことを確認します。

次にMySQLのテーブルデータにアクセス可能なODataエンドポイントを作成します。左側のメニューから「OData」を選択して「+Add」でエンドポイントを追加します。

エンティティセットとして「Derived Views」と「Connections」が選択出来ますので「Connections」を選択します。作成したMySQLへの接続を選択して進むとMySQL内のデータベースとそのテーブルのリストが表示されます。追加するテーブルを選択(本例ではsakilaデータベースのcustomerテーブル)して次に進みます。

ODataエンドポイントが追加されたことを確認します。

次にODataエンドポイントへのアクセス時に認証情報として必要なPersonal Access Token(略してPAT)を取得します。右上の歯車マーク(Settings)をクリックしてAccess Tokensタブを開きます。

「+Create PAT」ボタンをクリック、任意の名称(本例では、SalesforceConnect)を付与して作成します。作成したPATは後の手順で必要となりますので、画面に表示された文字列をコピーして保管しておきます。

PATが作成されたことを確認します。

本手順でCData Connect Cloud側の手順は完了です。

Salesforce側の設定

「設定」内の「外部データソース」を開き「新規外部データソース」をクリックします。

新規外部データソースを作成して以下の項目をセットして保存します。

  • 外部データソース:任意(本例では CDataConnectCloud)
  • 種別:Salesforce Connect : OData4.0
  • URL:https://cloud.cdata.com/api/odata/service
  • ID種別:ユーザ
  • 認証プロトコル:パスワード認証
  • 管理者ユーザ名:CData Connect Cloudのログインメールアドレス
  • パスワード:CData Connect Cloudで取得したPAT

外部データソースが作成されたら「検証して同期」ボタンをクリックします。

CData Connectの管理コンソールで追加したODataエンドポイント(本例ではCustomer)がリストに表示されるので選択のチェックをオンにして「同期」ボタンをクリックします。

同期が完了したら外部オブジェクトが追加されていることを確認します。

追加された外部オブジェクトは「設定」>「外部オブジェクト」からも参照可能です。

作成した外部オブジェクト内のデータを参照するためのタブを追加します。「設定」>「タブ」を開き、カスタムオブジェクトタブの新規ボタンをクリックします。

新規カスタムタブ画面でオブジェクトに上記手順で追加した外部オブジェクト(本例ではCustomer)を選択し、タブスタイルは適当なものを選択して次へ進みます。

プロファイルに追加、カスタムアプリケーションに追加の確認がありますので適切な設定を行い(本手順ではデフォルトのまま)保存します。カスタムオブジェクトが追加されたことを確認します。

本手順でSalesforce側の外部オブジェクトの設定は完了です。

Salesforceの画面からMySQLのデータを参照

Salesforceのセールスやサービスアプリケーションを開くと上記手順で追加したタブ(本例ではCustomer)が追加されていることを確認できます。追加したタブを開き、カスタムビューを「最近参照したデータ」から「すべて選択」に切り替えます。

下記のような「EXTERNAL_OBJECT_AUTHENTICATION_EXCEPTION: このレコードを表示するには、ここで個人設定内の外部データソースのログイン情報を入力してください: https://*****.my.salesforce.com/lightning/settings/personal/ExternalObjectUserSettings/home。または、Salesforce システム管理者にお問い合わせください。」エラーが表示されます。これは、使用しているSalesofrceのアカウントが外部データアクセスする権限がないため表示されます。

個人設定内の「外部システムの認証設定」を開き「新規」ボタンをクリックして以下の認証設定情報をセットして保存します。

  • 外部システム定義:外部データソース
  • 外部データソース:追加した外部データソース(本例では CDataConnectCloud)
  • ユーザ:Salesforceのユーザ
  • 認証プロトコル:パスワード認証
  • ユーザ名:CData Connect Cloudのログインメールアドレス
  • パスワード:CData Connect Cloudで取得したPAT

外部システムの認証設定が追加されたことを確認します。

再度、追加したタブ(本例ではCustomer)の「すべて選択」カスタムビューで更新ボタンをクリックします。外部IDと表示URLのリストが表示されました。

「リストビューコントロール」 > 「表示する項目を選択」からリストに表示するMySQLのテーブル項目を選択します。

MySQLのテーブル(Customer)データがSalesforceのリストに表示されました。

本リストに検索条件を追加することも可能です。下記の画面例ではActiveなレコードのみを抽出する条件を追加しました。

Salesforceで本タブが開かれたタイミングでリアルタイムにCData Connect Cloudを中継してMySQL内のデータを取得します。実際にどのようなSQLがMySQLに発行されたかはCData Connect Cloudの管理コンソール(Logs > QueryLog)で確認が可能です。

ログの詳細を見ると以下のようなWHERE句付きのSELECT文をMySQにクエリしていることを確認できました。 

SELECT [MySQL].[sakila].[customer].[active],[MySQL].[sakila].[customer].[address_id],[MySQL].[sakila].[customer].[create_date],[MySQL].[sakila].[customer].[customer_id],[MySQL].[sakila].[customer].[email],[MySQL].[sakila].[customer].[first_name],[MySQL].[sakila].[customer].[last_name],[MySQL].[sakila].[customer].[last_update],[MySQL].[sakila].[customer].[store_id]
FROM [MySQL].[sakila].[customer]
WHERE [MySQL].[sakila].[customer].[active] = @P0
ORDER BY [MySQL].[sakila].[customer].[last_update] DESC , [MySQL].[sakila].[customer].[customer_id] DESC
LIMIT (51)

まとめ

本記事ではAWSのデータベースサービスRDSのMySQL内のデータをSalesforceの外部オブジェクトとしてSalesforceの画面から参照するシナリオをご紹介しました。CData Connect Cloudは、MySQLの他にも140を超えるクラウドデータベースやSaaSアプリケーションのデータに接続可能です。CData Connect Cloudはこちらのページから30日間の無償トライアルが可能ですので是非お試しください。




トライアル・お問い合わせ

関連コンテンツ