Salesforce側でデータの取り込みができました。
今回はDynamics CRMのデータを取り込みについて。
(先にお断りしておきますが、失敗談を盛り込んでいるので、内容がグダグダです)
いきなり壁にぶち当たる
「作り方は分かった、SFDCと同じようにすればいいんだな」とタカをくくっていたら、えらいハマりました。
まずはパイプラインデザイナーでDynamicsとの接続を試みたところ…
なっ、ない!(*´ω`*)
Salesforceでは接続がすんなりできていたものの、それはコネクタが既に用意されていたからなんですね。
データベースの内容も色々いじってみたけど、Dynamicsと直接関わるような設定はなさそうだったので断念。
パイプラインデザイナーからの接続は諦めることに。
(情報ある方プリーズ!)
では接続不可なのか?
いや、そんなことはないはず。
Talendのサイトを見てもコネクタがサポートされているはず。
それにしてもスゴイ数のコネクタがサポートされてますわ。
ほとんどが知らないヤツだけど、Talend使えば世界が一つになりますね。
Cloudは捨ててTalend Studioでやってみる
諦めが肝心!
ってことで、別の方法で。
Cloudはまだまだ発展途上のような感じがあるので、洗練された感があるTalend Studioから接続を試みることに。
早速、Talend Studioをダウンロード。
Talendのダウンロードページから製品をダウンロード。
DataIntegrationをダウンロードしたが実はパイプラインデザイナーとのよく違いが分かっていない。。。
やっぱちゃんと予習すべきだったかな。
インストール後、プロジェクトの作成が必要なので新規プロジェクトで作成しました。
インストールするとようこそ画面が出てきます。
チュートリアル的な感じの画面もあるけど、とりあえずデモ版をインポートして参考にすることに。
Talend Studioで接続設定も…
では、Dynamicsとつなげてみましょう。
どハマりポイント1:Dynamicsの繋ぎ方が分からない
ファイル系だったり、SalesforceやAzureなどはすでにアイテムとして用意されているので、一目瞭然なんですがDynamicsのアイコンがここにもなかったみたい。
で、いろいろと試行錯誤したところ、接続設定は左側の[メタデータ]→[DB接続設定]からやるみたい。
そして、もう一つ重要なのがJDBC経由でDynamicsと接続するみたいです。
JDBCということなので、当然ドライバが必要となってきます。
自力で自作するのは困難なので、CDataからドライバを拝借することに。
こちらもアカウント登録すればトライアル期間があるので、それを使うことに。
アカウント登録すればDynamics CRM JDBCドライバがダウンロード可能です。
ダウンロードしたら解凍して、setup.jarを叩きましょう。
インストーラが起動します。
こちらがインストール画面。
特別な設定はなく、先に進めばOK。
インストールした場所は後で使うので覚えておきましょう。
ドライバのインストールが完了したら、Talend Studioに戻ってDB接続定義を作成。
[メタデータ]→[DB接続定義]を右クリック、[接続定義]を選択。
名前や説明を入力。
ここは任意名でOK。
次がとっても大事。
JDBCドライバの情報をこのように入力(ここを参考に設定しました)。
項目 | 値 | 備考 |
DBタイプ | JDBC | |
JDBC URL | jdbc:dynamicscrm:User=[ユーザID];Password=[パスワード];URL=https://[組織名].crm.dynamics.com/;CRM Version=CRM Online; | []内はDynamics接続環境の情報を入力 |
ドライバー | ※下記参照 | |
ドライバーのクラス | cdata.jdbc.dynamicscrm.DynamicsCRMDriver | ドライバー指定後、「クラス名の選択」で自動設定される |
ユーザID | 接続先Dynamics環境のユーザID | 実は使わないらしい |
パスワード | 接続先Dynamics環境のパスワード | 実は使わないらしい |
マッピングファイル | Mapping SQL | 多分使わない |
ドライバーの指定は、[+]ボタンで新規作成→右側の[…]ボタン押下→「新規モジュールのインストール」で先ほどインストールしたCDataのJDBCドライバーを指定。
最終的にはこのような設定に。
これで接続定義はひとまず完了、
「Test connection」で接続確認してみる。
(꒪ω꒪υ)
エラーやんけ!!!
設定内容を確認したけど、原因はよく分からん。
どハマりポイント2:DynamicsCRMドライバーが使えない!?
Dynamics CRM JDBCドライバーを使った接続がNGだったので、ダメ元でDynamics 365 Salesドライバーを使ってみることに。
設定等は割愛しますが、何とこちらは接続成功( ゚皿゚)
ますまず謎が深まるばかり。
とりあえず、これで突き進んでみることに。
接続確認後、作成されたDB接続定義を右クリックして[スキーマの取得]を選択。
これでエンティティが取り込まれるかと期待していたら。。。
取れず(泣)。。。
おそるべし、Talend。
エラーも出ないし。
まぁ、これでうまくいく方が怖いけど。
今まではMac環境でやっていたので、環境をガラッと変えてWindows版でやることに。
このためにネカフェに行くなんて。
再びDynamicsCRMドライバーに戻して同じような設定で。
すると、何と接続が成功!
まさかのOS依存なのか!?
なんかまだMac版の方が不安定な感が否めないなぁ。
ということで、お次はエンティティの取得。
出来上がったDB接続設定に対し、右クリックして[スキーマの取得]を選択。
最初の画面はそのまま[Next]でOK。
次のスキーマ選択でエンティティが取り込まれてるではありませんか!
今回はAccountを使用するのでチェックを入れます。
このように、テーブルにAccountエンティティが表示されています。
やったね!
どハマりポイント3:コンパイルエラーだと!?
エンティティまで取り込んだらあとは楽勝…のはずだったんですが、また落とし穴が。
取り込んだエンティティを使ってジョブを作ることに。
ジョブを左のリポジトリから新規に作成し、デザイナーみたいなものが出てきます。
Accountを入力に使いたいので、テーブルにあるAccountをデザイナーへドラッグアンドドロップ。
ドロップした後に出てくるウィンドウは「tJDBCInputを選択」を選択。
これが入力を意味します。
次は出力側。
今回は途中の処理はナシでダイレクトにCSVに登録します。
こちらは右側のパレットから[tFileOutputDelimited]をデザイナーにドラッグアンドドロップ。
作成した2つのコンポーネントがバラバラなので繋げます。
入力側のコンポーネントを選択して右クリックを押しながら出力側に持っていきます。
出力側はCSVを想定しているので、区切り文字や文字コードを調整。
いざ実行!
…できない(╥﹏╥)
コンパイルエラーが出てしまいました。
実際にコード打ち込んでないのに何で!?
エラーは何箇所かありました。
まずは、パッケージを最新化しました。
オプションのライブラリも込みでインストール(結構時間かかりました)。
それでもエラーは解消せず。
あとは、Javaのバージョンが噛み合っていないのではと思い、Oracle1.8のJavaでビルドしてみることに。
Javaを入れて、環境設定を変えて、設定も変更。
TalendのJavaインタプリタも変更。
これでようやくビルドが通りました!
そして実行!
CSVが出力されて、Accountの内容も取り込まれているので成功です!
ふぅ〜、長かった。
今回の検証のまとめ
やってみてできたこと・できなかったこと
- パイプラインデザイナーからDynamicsの接続はできなかった
- Talend Studioを使用してもMac環境からは接続できなかった
- WindowsであればDynamicsCRMの取り込みができた
この辺り、何かのバージョンアップとかで動きが変わるかもしれないので今後要チェックです。
簡単にできると思っていましたが、大苦戦でした。
やはり、全体的にTalendの知識が浅かったので、次回は反省会をします。
コメント