今回は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の通りにやれば大丈夫だと思います。(多分)
皆さんもぜひトライしてみてください。