D365BC と Common Data Service の連携(4)


前回の記事ではCDSとBCの双方にデータが存在し、紐づけられているケースについて検証しました。今回は片方にしかデータがない場合でもう片方にデータレコードを新規作成するケースを検証します。

1. BCで新規作成→CDSに連携
まずはBCでCustomerを1件新規作成し、CDSに連携。

Customerの一覧画面で「+新規」
テンプレートを聞かれるがどちらでも可。今回はB2Bのテンプレートを使用。 新規作成する得意先の名称を入力。鉛筆ボタンで照会モードに切り替えてデータを確定(保存) 同期を実行。 CDSに対応するレコードがないので「Coupling」を新規作成して良いか聞かれる。このCouplingがミソ。はいを選択。 このような画面が表示される。この画面で今回新規作成した得意先のCoupling設定を指定する。ここでの選択肢は2つ。CDSのレコードを新規作成するか、既存のCDSレコードを指定して紐づけを行う。今回は前者とする。CDSのレコードを新規作成する場合、CreateNewスイッチをONにする。
同期が実行される。 実行結果ログを確認。CDSに 1件作成された。 作成されたCDSのレコードを確認する。直接CDS側で見てもよいが、より明確に紐づけ先レコードを確認するため、BCから照会する。BCの得意先マスタのカードページのどこかにある「Account」ボタンを虫眼鏡ボタンから検索して選択。 新規タブが開き、CDS側のAccountレコードフォームが開く。名称が正しく連携されている。ここまでは順調。

2. CDS側で新規作成→BCに連携
CDSでCustomerを1件新規作成する。「+New」ボタンを押下。 新規作成画面が開く。 名称を適当に作成してSave。BCから同期を実行する。( CDSから同期実行するメニューがありそうだが不明。CRM連携は存在した気がする。) 同期を実行。いろいろな画面から同期は実行できるが、今回はSetup画面からの例。対象の4マスタのうち、得意先だけ同期実行する場合は、Customer以外の行を削除する。点々ボタンを押して「さらに選択」を選ぶと、、 複数選択できる。Customer以外を選択して削除。 Customerだけ残った状態でSync All。 はい、を選択。 ログを確認する。 ログを確認。 1件も作成されていない。。失敗。 原因はこちら。テーブルマッピングでBCのCustomerとCDSのAccountを紐づけているが、そこでフィルターが掛かっている。ただ、一覧画面上で条件を見ると「Field6=1,…」のように項目名がサッパリわからない仕様になっている。 が、慌てず点々ボタンを押すと条件がフィールド名称で確認できる。CDSがわで新規作成したレコードがこの条件を満たしているかを確認し、必要に応じて修正する。 画面から更新したいところだが、実は条件で指定されている項目は標準のフォームに含まれない項目なので編集できない。(これは改善してほしいところ。。)よって、Excelから編集する。Excelでデータ編集」ボタンを押すと、、 Excelがダウンロードされるので開く。 編集を有効にする。 初回はこのようにPower Appsのアドインのインストール確認が表示される。信頼して進める。 サインインする。ここで使用するアカウントはBCにサインインしていたアカウント。 Excelでデータを確認。RelationshipTypeがブランクになっている。ここはCustomerにすべき。 StatusはActiveなので問題ない。 Company 列は2つ存在する。Lookupとついているほうはハズレ。他のレコードを見ると先に見たBC-CDSのマッピングテーブルのフィルタ条件値と異なる。 こちらのCompanyがブランクになっているのがCDSからBCに同期されない原因。 BCのフィルタ条件値(=上のレコードと同じ値)を指定する。 RelationTypeにはCustomerを指定。そして右下のPublishボタンを押す。 Publishが成功すると、Company(Lookup)列に値がセットされる。実は、Company列の値をキーにしてCDSのCompanyエンティティから値を取ってきている。 BCに戻り同期を実行。 先ほどと同様に同期を実行する。 はい、を選択して同期実行。 テーブルマッピングから、、 ログを確認。 1件の新規レコードがBCの得意先に作成された。(そしてここでもCDSではなくCRMと書いてあるw) BCの得意先一覧を確認するとCDSからAccountが同期してCustomerが新規作成されていることがwかる。成功! なお、この検証をしている際に以下のエラーが何度か出た。確証はないが、BC側で複数インスタンスを持たせたときに発生するような気がする。実は途中から別の検証目的でProduction2を作成した後くらいからエラーが発生した。そして最後はProduction2で同期の実験を行った。CompanyのIDはGUIDだと思うのだけど、ProductionもProduction2もGUIDが同じだったので、そこが悪さしているような。。。確証はないけど。

次回はExcelでデータ編集しなくて済むよう、CDS側のフォームに項目追加します。

1件のコメント

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です