Dynamics 365 / CDS ActivityLog(活動ログ)を触ってみる:June 2019 Monthly Update
Dynamics 365 Monthly Update-June で Activity Log(活動ログ)というものが追加されていました!
結構面白い機能なので、記事として残しておきたいと思います。
ActivityLog(活動ログ)とは?
Dynamics 365 for Customer Engagement の操作ログを取得できると思っておけばOKです。
データの作成・更新・削除はもちろんのこと、レコードの表示、一覧の表示、ExcelExportやエンティティのカスタマイズ、フィールドの追加、カスタマイズの公開といった情報まで取得することが可能です。
Plugin開発を行ったことがある方ならわかりやすいかもですが、Microsoft.Crm.Sdk.Messages に載っているほとんどのものが取得できます。
Microsoft.Crm.Sdk.Messages Namespace | Microsoft Docs
現在取得できない Messageは以下のリンクで確認できます。
WhoAmIや、QueryExpressionToFetchXmlといった並びを見ると、Utility系のMessageとかかなと見えますね。
- WhoAmI
- RetrieveFilteredForms
- TriggerServiceEndpointCheck
- QueryExpressionToFetchXml
- FetchXmlToQueryExpression
- FireNotificationEvent
- RetrieveMetadataChanges
- RetrieveEntityChanges
- RetrieveProvisionedLanguagePackVersion
- RetrieveInstalledLanguagePackVersion
- RetrieveProvisionedLanguages
- RetrieveAvailableLanguages
- RetrieveDeprovisionedLanguages
- RetrieveInstalledLanguagePacks
- GetAllTimeZonesWithDisplayName
- GetTimeZoneCodeByLocalizedName
- IsReportingDataConnectorInstalled
- LocalTimeFromUtcTime
- IsBackOfficeInstalled
- FormatAddress
- IsSupportUserRole
- IsComponentCustomizable
- ConfigureReportingDataConnector
- CheckClientCompatibility
- RetrieveAttribute
監査ログとの大まかな違い
一応以下のURLにも書かれていますが、あくまでレコードの変更(追加・更新・削除)あとアクセスくらいを記録するためのものでした。
それに対して、ActivityLogは上記の通り、監査ログよりももっと広い範囲の情報を取得しておけます。
それからデータの格納先、閲覧先もDynamics365からOffice365のセキュリティ・コンプライアンスセンターに変わっています。
現在ここには、Dynamics365以外のActivityLogも格納されているので、システム管理者が横断的にMicrosoft クラウド・プラットフォームの状況を把握することができるようにという考慮かなと思います。
ただ、私が触ってみて感じたちょっとした違いですが、監査ログでは、更新前のレコードと更新後のレコードの値が確認できましたが、ActivityLogではアップデートされたレコードしか確認することができませんでした。
何が見えるの?
監査ログは以下のようにOffice365セキュリティ・コンプライアンスセンターで検索できるようになります。
CSV形式でダウンロードもできるので便利ですねー。
あと、いくつか私が取得したログの詳細を紹介したいと思います。
RetrieveMultiple(ビューの表示・一覧の取得)
一覧表示のアクセスですね。これが今までの監査ログでは取れなかったので、大きなポイントですね。アクセスユーザーやUser Agentなども取得できています。
アクセスもとのIPアドレスが表示されるのも地味にいいですね。
詳細のほうを見ると、RetrieveMultipleにリクエストされたクエリも見れますね。今回はアクティブな自分の取引先企業ビューを使ったので、それがQueryの欄に設定されていることがわかります。
QueryResultsで実際に取得したレコードのGUIDも確認できます。
Create
Createは作成時のフィールド情報が表示されます。これは取引先企業に企業名だけを入力して作成したものですが、2つのオプションのデフォルト値も一斉に入力されるので、少し情報量が多いですね。
Update
Updateはもう少しシンプルになります。YOみなめだけ上書きしたことが、リクエストからはっきりと読み取れますね。ただ、以前の値がなんであったのかはわかりません。
Asociate(関連付け)
関連付けは関連元と関連先のGUIDがわかるだけでなく、関連付けしたルックアップフィールド名も確認できました。
SetState
SetStateはちょっとおもしろいですね。これは非アクティブ化を実行したログです。SetStateがコールされた後にUpdate Accountが行われています。
実際のリクエストはUpdateを見たほうがわかりやすいですね。StateCodeとStatusCodeがUpdateされていることがわかります。
以上ですが、こんな感じの情報を見ることができました。
設定方法
それでは、AcitivityLogの設定を解説していきます。
設定は、Dynamics 365とOffice365両方で設定が必要です。特に面倒なことはありませんが、ちょっとわかりづらい部分もあるので、画面キャプチャベースで解説します。
必要要件
まず、必要要件ですが、Dynamics365のライセンス以外にもOffice365 E3もしくはE5のライセンスが必要となるので要注意です。
Office365 E3 or E5
Dynamics 365 for CE
Dynamics 365のバージョンは「8.2.2.1310 」以降。今トライアルを取得する場合は特に気にしなくてOKです。
Dynamics 365 側の設定
まずDynamics 365側の設定です。(ちなみにOffice365からやっても大丈夫です)
設定画面に移動して「管理」メニューを表示し
「システム設定」を開きます。
その中から、監査タブに移動して、監査をONにします。そして、「読み取り監査を開始する」にチェックを入れると、ActivityLogの設定が行われます。
また、基本的にデフォルトの監査ログと設定は共通のようです。監査対象とするエンティティや領域には今までと同じようにチェックを入れておく必要があります。
また、エンティティのカスタマイズ画面でも設定を有効化します。以下は取引先企業のエンティティ設定画面です。
監査のチェックを入れるのはもちろんですが、今回のAcitivityLogで追加された設定である「単一レコード監査」「複数レコード監査」も確認できます。
前者がフォームなどでレコードを表示した場合(Retrieve)のログを出力し、後者が一覧画面やExcelエクスポートなどでレコードを表示した場合(RetrieveMultiple)のログ出力設定です。
読み取りはやはり1番ログを発生させやすいので、こういった形で細かく区切られているのだと思います。必要なものにチェックを入れて、「保存」→「公開」すれば設定は完了です。
Office365 セキュリティ・コンプライアンスセンターの設定
次にOffice365 セキュリティ・コンプライアンスセンターで監査ログの有効化を行います。
セキュリティ・コンプライアンスセンターには「protection.office.com」のURLでアクセスできます。
アクセスしたら、左ナビゲーションから「検索」→「監査ログの検索」を選択します。デフォルトの環境では監査が有効化されていないので、以下のようにボタンをクリックします。
※ちなみに、アカウントを取得したばかりだと、以下のように表示されません。少し時間を置いてアクセスし直す必要があります。(トライアルを取得したばかりの時がこうでした。)
監査を有効化すると、以下のように監査の検索ができるようになります。ただ、最初はデータがクローリングされるまでにまた時間がかかるみたいです。1日くらい置いたほうがいいかもです。
実際に監査ログを検索するには、そのまま検索ボタンを押してもいいですが、ここにはDynamics以外の監査ログも表示されるので、Dynamics 365 のアクティビティだけに絞ったほうがいいです。
これで以下のように Dynamics 365 のActivityLogが表示されます。
PowerApps CDS ではどうなの?
さすが同じアーキテクチャ! 同じように利用可能です!