Morning Girl

Web API, Windows, C#, .NET, Dynamics 365/CRM etc..

SSIS(SQL Server Integration Service)を使って、Dynamics 365(CRM)からKintoneに顧客データを連係させてみる

最近Dynamics 365で生成されたデータをKintoneに連係させたーい

という問い合わせがありました。

個人的には、マイクロソフトMVPとして、Dynamics 365と連係させるなら、SharePointでしょう! と言ってしまいたいところですが、なかなかどうして、Kintoneの人気は留まるところを知らないようで。

でも、やはりSFAはDynamics 365やSalesforce。バックオフィス用の簡易的な業務系アプリはKintoneみたいな構成の会社さんはそれなりに居るようです。

でも、なかなか「どのように」連係させればいいのか? というところの情報が少ないようですね。

そこで、今回はそんなお問合わせの要望にお答え(?)して、Dynamics 365(CRM)から、Kintoneへのデータ連係方法として、SSISを用いたアプローチをお伝えしたいと思います!

↓こんなイメージ

f:id:sugimomoto:20171203170132p:plain

あとこの記事はCData Software User Group Advent Calendar 2017 の3日目です!

qiita.com

SSISSQL Server Integration Service)って何?

そもそも、SSISって何? っていう方もそれなりに居るのではないかと思います。

IT用語辞典から引用すると以下のような感じ。ざっくり言ってしまえばマイクロソフト製データ連係ツールです。

いわゆるETLツール(Extract/Transform/Load)の一種で、SQL Serverデータベースを含む様々な形式のデータ群から必要なデータを抽出し、希望の形式に加工・変換して利用先に保存する。抽出や変換の規則などはグラフィック表示とマウス操作で編集することができるほか、コマンドラインツールやスクリプトで設定や実行を管理することもできる。

e-words.jp

単純なフローであればプログラミングも不要で、以下のような感じで、コンポーネントドラッグアンドドロップ形式で配置し、データ連係のフローを構成することができます。

f:id:sugimomoto:20171203170146p:plain

公式のわかりやすい記事は以下かなと思います。

SQL Server Integration Services | Microsoft Docs

SQL Server Integration Services ( SSIS ) の使い方 – Microsoft Japan Data Platform Tech Sales Team Blog

なお、以下のSQL Serverエディション比較のビジネスインテリジェンスのところを見てもらえればわかるかと思いますが、SQL Server Standard以上のエディションを購入すると、そのままセットで付いてきます!

https://www.microsoft.com/ja-jp/sql-server/sql-server-2017-editions

タダでついてくるも同然なのに、ちょっと扱いが地味じゃないか!? と私は思ったりですが、製品としては高機能なので、是非このマルチクラウド時代のETLツールとして、もっともっと広まってほしいところです。

ちなみに最近はクラウドSSISとも呼べる、Azure Datafactoryというサービスもあります。こちらは、後々Blogで紹介していきたいと思います。

ただ、SSIS単体は十分高性能なのですが、残念ながらあまりクラウドサービスにつながりません。(OdataやHadoop、標準的なリレーショナルデータベースはほとんどサポートしています。)

そこのそんな、データソースの不足を補うために、Cdata Software では、SSIS用のコンポーネント80種類以上提供しています!これで一気にSSISの接続先が増えます!

https://www.cdata.com/jp/download/?f=ssis

今回は、そのコンポーネントのKintoneとDynamics CRMを利用して、顧客データの連係を構成してみたいと思います。

事前準備

事前準備として、もちろんDynamics 365とKintoneの環境を用意しておいてください。

どちらも30日間の試用版があるので、タダで試すことができます。

あとは、Visual StudioSSIS、そしてCDataのSSIS Kintone・Dynamics CRMコンポーネントをインストールしておきましょう。

Cdata SSISコンポーネントも30日間無償で試用できます。

Cybozu kintone Drivers - ダウンロード

Microsoft Dynamics CRM Drivers - ダウンロード

Visual StudioはCommunityでも大丈夫です。個人的には、SSIS使うのであれば、まだ2015版が良さげです。SSISSQL Server Developerエディションにも付属しているので、そちらをインストールしておくのがおすすめです。

今回は、Dynamics 365の取引先企業データを

f:id:sugimomoto:20171203170155p:plain

Kintoneの顧客リストへ連係します。

f:id:sugimomoto:20171203170201p:plain

もちろん、まだデータは入っていません。

f:id:sugimomoto:20171203170207p:plain

Dynamics 365(CRM)からKintoneへのデータ連係構成手順

それでは実際に、SSISでデータ連係処理を構成していきたいと思います。

まず、Visual Studioを立ち上げて、新しいプロジェクトを作成します。

f:id:sugimomoto:20171203170213p:plain

テンプレートから[ビジネスインテリジェンス]→[Integration Service]→[Integration Service プロジェクト]を選択し、任意の名称を入力して、[OK]をクリックします。

f:id:sugimomoto:20171203170219p:plain

SSISは、基本的に制御フローとデータフローの画面を駆使して、データ連係構成を行っていきます。

今回は、単純なデータフローを作成するので、SSISツールボックスから[データフロータスク]を選択して、ドラッグアンドドロップで、キャンパス(って言っていいのかな?)に配置します。

f:id:sugimomoto:20171203170226p:plain

配置した、データフロータスクをダブルクリックすると、データフローのデザイン画面へ移動します。

右側のSSISツールボックスコンポーネントがデータフロー用に変わって、Cdata SSISコンポーネントが表示されたのがわかるかと思います。

今回は、Dynamics CRM(365)からまずデータを出力するので、Dynamics CRM データ抽出用コンポーネントである[Cdata Dynamics CRM Source]をドラッグアンドドロップでキャンパスに配置します。

f:id:sugimomoto:20171203170234p:plain

配置した、[Cdata Dynamics CRM Source]をダブルクリックすると、以下のような画面が表示されます。

Newでまず接続先情報を入力します。

f:id:sugimomoto:20171203170241p:plain

Dynamics CRMに接続するためのパラメータ入力画面が表示されるので、必要なパラメータを入力します。

Dynamics 365 Onlineであれば、CRM Versionで[CRM online]を選択し、URL・User・Passwordを入力すれば繋がるはずです。

f:id:sugimomoto:20171203170246p:plain

次に、データの取得項目を選択します。

今回はシンプルに、企業名と電話番号を連係します。

Data access mode で[SQL Command]を選択し、SQL Commanndとして[select Id,Name,Telephone1 from Account]を入力します。

f:id:sugimomoto:20171203170254p:plain

上記だけで基本的に大丈夫ですが、Previewボタンをクリックすると、データ取得結果がプレビューできます。

f:id:sugimomoto:20171203170258p:plain

次に、Kintone の接続先を配置します。

Kintoneにはデータの書き込みを行うので、書き込み用のコンポーネントである[Cdata Kintone Destination]をドラッグアンドドロップで配置します。

f:id:sugimomoto:20171203170304p:plain

配置後、以下のように、[Cdata Dynamics CRM Source]から青線を引っ張って繋げます。

f:id:sugimomoto:20171203170310p:plain

[Cdata Kintone Destination]のプロパティを表示して、先程と同じように接続情報を入力します。

f:id:sugimomoto:20171203170315p:plain

初期状態のKintoneであれば、URL・User・・Passwordを入力することでログイン可能です。

f:id:sugimomoto:20171203170323p:plain

接続後、データを書き込む先のTableが選択できるようになるので、顧客リストを選択し、Insertを選択。

(今回は、シンプルにInsertとしましたが、実際にはUpdateやDeleteを組み合わせて、うまくデータが同期されるように構成してください。)

f:id:sugimomoto:20171203170329p:plain

その後、Dynamics CRM(365)のどの項目をKintoneにマッピングするかを構成します。

左ナビゲーションの[マッピング]を選択すると、それぞれの項目一覧が表示されるので、連係したい項目をマッピングしましょう。

f:id:sugimomoto:20171203170344p:plain

これでOKです!

あとは、デバッグボタンをクリックすれば、データ連係処理が実行されます。

以下のように、緑のチェックマークが各コンポーネントで表示されれば、連係完了です。

f:id:sugimomoto:20171203170351p:plain

Kintoneの画面を見ると、正常に連係されていました!

f:id:sugimomoto:20171203170356p:plain

おわりに

いかがでしたでしょうか。

実際にはもっと細かな処理が必要になるかと思いますが、SSISでこんな感じでデータ連係が組めるイメージは伝わったのではないかと思います。

もちろん、これ以外にもマーケティングツールであるMarketoとKintoneを組み合わせたり、KintoneからSharePointへ連係したりも、SSIS+Cdata コンポーネントで実現可能です。

SQL Serverは購入していながら、SSISはよくわからなくて、放置されてしまっているところも、よく見かけますので、この際に是非活用してみていただきたいところです。

次回は、Azure Data Factoryでも、連係構成をしてみたいと思います。