D365BC と Common Data Service の連携(7)


今回はCDSのカスタムエンティティとBCの標準テーブルを連携させる手順について解説します。

基本的にはDocsの以下の記事に沿って進めればOKです。
https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/administration/administration-custom-cds-integration

前提条件に「CDSのWorkerエンティティが必要」と書いてますが、準備が結構大変なので自作のWorkerエンティティでも代用可能です。

こんな感じでCodeとNameがあれば実験には十分です。

前提条件に記載されていますが、Visual Studio Code と AL(BCの開発言語)をインストールしておく必要があります。ALの基礎は Getting Started with ALとかBuilding Your First Sample Extension With Extension Objects, Install Code, and Upgrade Code を見てサンプルコードで動かして身につけておきましょ

Cronusのデータが必要と書かれていますが、別になくても大丈夫です。

最初に躓くのはこのaltpgen.exeの部分。

DocsのWalkthroughに沿ってPowerShellを実行すると以下のエラーが出ます。

これは既知のエラーで、以下の記事の一番下に解決策が書いてあります。
https://github.com/microsoft/AL/issues/5877
具体的には以下のリンク先のツールを実行すればOKになります。
(得体のしれないツールをインストールするのが嫌なら、仮想マシンなどでやってみると良いです。
http://www.nirsoft.net/dot_net_tools/strong_name_remove.html

altpgen.exe実行のサンプルコードはこちら

C:\Users\[ユーザーID]\.vscode\extensions\ms-dynamics-smb.al-5.0.XXXXXX\bin\altpgen.exe -project:”C:\Users\ [ユーザーID] \Documents\AL\[ALプロジェクトのフォルダ名]” -packagecachepath:”C:\Users\ [ユーザーID] \Documents\AL\ [ALプロジェクトのフォルダ名] \.alpackages” -serviceuri:https://[CDSの環境のURL].crm7.dynamics.com -entities:crc99_reward -baseid:50000

成功すると、VSCodeにテーブル定義のソースが生成されます。
Walkthroughには「altpgen.exeの実行によりテーブルが生成される」と書いてありますが、微妙に正しくないです。実はソースコードが生成されるのみで、このソースをPublishしない限りテーブルは生成されません。

何が言いたいかというと、実はaltpgen.exeは必須ではないということです。試しにaltpgen.exeで生成されたコードを他のテナントにコピペして後続のステップを進めるとaltpgen.exeを使わずとも問題なく動きます。つまりaltpgen.exeはただのCodeGeneratorだという理解です。(他のテナントにコピペして実験する際はテナント依存の部分、例えばCDS環境のURLとかカスタムエンティティのPrefixとかは適宜修正のこと。)

もう一つ躓くとしたら、権限エラーです。BCとCDSの同期をとるために”Integration Business Central”というユーザIDが使われています。

以前の仕様では(少なくとも2年前のBC-CRM連携では)連携用のユーザーIDが別途必要で、Office365の管理画面からユーザーIDを作ってBCのライセンスを割り当てていました。ですが、現在はこれが必要なくなりました。

Power Platform管理センターからユーザーの権限設定を行おうとすると、”Integration Business Central”が表示されません。ここは「Dynamics 365 でユーザーを管理する」をクリック。

すると ”Integration Business Central” が表示されるので、ロールの管理をクリックして、、

システム管理者にチェックを入れて権限を付与します。

あとはWalkthroughの通りにやれば大丈夫だと思います。(多分)
皆さんもぜひトライしてみてください。

返信を残す

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