今回はBCのサインインに必要な最小限の権限を特定する方法を解説します。
発端はD365BCのフォーラムに投稿された興味深い質問でした。
Unsolvable Basic Permission Question – Any method to solve it? – Dynamics 365 Business Central Forum Community Forum
要約すると、BCにサインインするための最低限の権限セットを作成したいが、権限レコーディングの機能は使用できない。何か良い手はないか?ということです。
1. 現象の確認
まずは新規で権限セットを作成します。
中身はブランクです。ここで「Start」ボタンを押します。
すると権限の記録が開始されます。この後の操作時に必要な権限が記録されるという便利な機能です。(そういえば、記録開始ボタンが分かりやすい位置に表示されるようになりました。以前は奥まったメニューにあってわかりづらかったです。)
今回はサインイン時の権限を記録したいので右上のユーザーIDからサインアウトします。すると、ここで権限を記録するセッションがなくなるため、レコーディングは停止されます。つまり、サインインのための権限が記録されません。これがフォーラムの質問者の言っていることです。
2. 解決策
準備として新規のユーザーを作成します。
ユーザー一覧画面から”Update users from Microsoft 365″を実行し、新規登録したユーザーをBCユーザーとして生成します。
ユーザーカードを開きます。いくつかの権限がデフォルトで付与されています。
権限を割当解除します。権限はユーザーグループ経由で付与されていますので、ユーザーグループの割り当てを解除すればよいです。
最初に作成したブランクの権限を割り当てます。
新規作成したユーザーでOffice365にサインインします。
BCのURLを直接入力します。
“Https://businesscentral.dynamics.com/[テナントID(orテナントのドメイン名)]/[Environment名」?Company=[カンパニー名]”
先にBCにサインインしていた管理者ユーザーのURLからコピーするのが早いでしょう。
Enterを押すとサインインしようとしますが、以下のエラーが発生します。Codeunitの権限がない、と言っています。
エラーメッセージ中のコードユニットを権限セットに追加します。
エラーメッセージに表示されているCodeunitのテキストをコピー&ペーストしてオブジェクトを検索します。
権限セットにオブジェクトを追加しました。一度フォーカスを別の行に移してから元の追加した権限セットの行に戻ると追加がコミットされます。
改めてテスト用のユーザーでサインインします。ブラウザのF5ボタンを押すのが早いです。
するとまたエラーになりますが、今度は別のCodeunitの権限がない、と言われています。
先ほどと同様にオブジェクトを追加します。
先ほどと同様にブラウザのF5ボタンを押してサインインしなおすと別のエラーが出ます。
この作業を繰り返すと以下のように権限セットが出来上がります。
2022/2/6に調べた限り、以下のオブジェクトを権限セットに含む必要がありました。(Table DataはRead権限だけでよいかも。。)
上のオブジェクトをすべて追加すると、最後に以下のエラーが表示されます。このエラーには何のオブジェクトが足りないかが書いてありません。ヒントは”Business Manager Evaluation”のロールセンター関連ということです。
“Business Manager Evaluation”のロールセンターに切り替えてみます。
Ctrl+Alt+F1でページ検査するとロールセンターのPageのIDが分かります。 “Business Manager Evaluation” は9022です。(ロールセンターによって異なります。)
結論を言うと、このPageのIDを権限セットに追加すればよいです。一応権限セットは分けておきます。新規で権限セットを作成します。
Page権限を追加します。
ユーザーに権限セットを追加で割り当てます。
改めて、テストユーザーのブラウザに戻り、F5でリフレッシュします。すると以下のような画面が表示されると思います。本当に「サインインしただけ」で何も表示されていません。左矢印ボタンを押してみます。
このような画面に遷移します。 こちらも「サインインしただけ」で何も表示されていません。
3. まとめ
ポイントは以下の3点です。
・権限のレコード機能ではサインインの権限は記録できない。
・ブランクの権限を作ってエラーが出るたびにオブジェクトを追加する。
・ロールセンターのページIDを権限セットに加える必要がある。
2点目はなかなか地道な作業です。。
必要なオブジェクトを見ていると「CRM Connection Setup」など、一見サインインに無関係な権限が必要なことが分かります。そして、BCがマイナーバージョンアップ/メジャーバージョンアップした際に追加される機能の権限がサインインに必要なMinimum権限に影響することを意味しています。個人的には「CRM Connection Setup」はサインインに関係ないと思うので、サインイン時のロジックを改善して、サインインに必要な最低限の権限があまり影響受けないようにしてほしいところです。