Morning Girl

Web API, Windows, C#, .NET, Dynamics 365/CRM etc..

Dynamics 365 / CDS ActivityLog(活動ログ)を触ってみる:June 2019 Monthly Update

Dynamics 365 Monthly Update-June で Activity Log(活動ログ)というものが追加されていました!

結構面白い機能なので、記事として残しておきたいと思います。

community.dynamics.com

ActivityLog(活動ログ)とは?

Dynamics 365 for Customer Engagement の操作ログを取得できると思っておけばOKです。

docs.microsoft.com

データの作成・更新・削除はもちろんのこと、レコードの表示、一覧の表示、ExcelExportやエンティティのカスタマイズ、フィールドの追加、カスタマイズの公開といった情報まで取得することが可能です。

Plugin開発を行ったことがある方ならわかりやすいかもですが、Microsoft.Crm.Sdk.Messages に載っているほとんどのものが取得できます。

Microsoft.Crm.Sdk.Messages Namespace | Microsoft Docs

現在取得できない Messageは以下のリンクで確認できます。

https://docs.microsoft.com/ja-jp/dynamics365/customer-engagement/admin/enable-use-comprehensive-auditing#whats-logged

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は上記の通り、監査ログよりももっと広い範囲の情報を取得しておけます。

https://docs.microsoft.com/ja-jp/dynamics365/customer-engagement/admin/enable-use-comprehensive-auditing#how-this-differs-from-past-audit-logging

それからデータの格納先、閲覧先もDynamics365からOffice365のセキュリティ・コンプライアンスセンターに変わっています。

現在ここには、Dynamics365以外のActivityLogも格納されているので、システム管理者が横断的にMicrosoft クラウド・プラットフォームの状況を把握することができるようにという考慮かなと思います。

ただ、私が触ってみて感じたちょっとした違いですが、監査ログでは、更新前のレコードと更新後のレコードの値が確認できましたが、ActivityLogではアップデートされたレコードしか確認することができませんでした。

f:id:sugimomoto:20190710001231p:plain

f:id:sugimomoto:20190710001236p:plain

何が見えるの?

監査ログは以下のようにOffice365セキュリティ・コンプライアンスセンターで検索できるようになります。

f:id:sugimomoto:20190710001241p:plain

CSV形式でダウンロードもできるので便利ですねー。

f:id:sugimomoto:20190710001251p:plain

あと、いくつか私が取得したログの詳細を紹介したいと思います。

RetrieveMultiple(ビューの表示・一覧の取得)

一覧表示のアクセスですね。これが今までの監査ログでは取れなかったので、大きなポイントですね。アクセスユーザーやUser Agentなども取得できています。

アクセスもとのIPアドレスが表示されるのも地味にいいですね。

f:id:sugimomoto:20190710001302p:plain

詳細のほうを見ると、RetrieveMultipleにリクエストされたクエリも見れますね。今回はアクティブな自分の取引先企業ビューを使ったので、それがQueryの欄に設定されていることがわかります。

QueryResultsで実際に取得したレコードのGUIDも確認できます。

f:id:sugimomoto:20190710001308p:plain

Create

Createは作成時のフィールド情報が表示されます。これは取引先企業に企業名だけを入力して作成したものですが、2つのオプションのデフォルト値も一斉に入力されるので、少し情報量が多いですね。

f:id:sugimomoto:20190710001315p:plain

Update

Updateはもう少しシンプルになります。YOみなめだけ上書きしたことが、リクエストからはっきりと読み取れますね。ただ、以前の値がなんであったのかはわかりません。

f:id:sugimomoto:20190710001322p:plain

Asociate(関連付け)

関連付けは関連元と関連先のGUIDがわかるだけでなく、関連付けしたルックアップフィールド名も確認できました。

f:id:sugimomoto:20190710001328p:plain

SetState

SetStateはちょっとおもしろいですね。これは非アクティブ化を実行したログです。SetStateがコールされた後にUpdate Accountが行われています。

f:id:sugimomoto:20190710001334p:plain

実際のリクエストはUpdateを見たほうがわかりやすいですね。StateCodeとStatusCodeがUpdateされていることがわかります。

f:id:sugimomoto:20190710001341p:plain

以上ですが、こんな感じの情報を見ることができました。

設定方法

それでは、AcitivityLogの設定を解説していきます。

設定は、Dynamics 365とOffice365両方で設定が必要です。特に面倒なことはありませんが、ちょっとわかりづらい部分もあるので、画面キャプチャベースで解説します。

必要要件

まず、必要要件ですが、Dynamics365のライセンス以外にもOffice365 E3もしくはE5のライセンスが必要となるので要注意です。

https://docs.microsoft.com/ja-jp/dynamics365/customer-engagement/admin/enable-use-comprehensive-auditing#requirements

  • Office365 E3 or E5

  • Dynamics 365 for CE

  • Dynamics 365のバージョンは「8.2.2.1310 」以降。今トライアルを取得する場合は特に気にしなくてOKです。

f:id:sugimomoto:20190710001347p:plain

Dynamics 365 側の設定

まずDynamics 365側の設定です。(ちなみにOffice365からやっても大丈夫です)

設定画面に移動して「管理」メニューを表示し

f:id:sugimomoto:20190710001353p:plain

「システム設定」を開きます。

f:id:sugimomoto:20190710001400p:plain

その中から、監査タブに移動して、監査をONにします。そして、「読み取り監査を開始する」にチェックを入れると、ActivityLogの設定が行われます。

また、基本的にデフォルトの監査ログと設定は共通のようです。監査対象とするエンティティや領域には今までと同じようにチェックを入れておく必要があります。

f:id:sugimomoto:20190710001407p:plain

また、エンティティのカスタマイズ画面でも設定を有効化します。以下は取引先企業のエンティティ設定画面です。

監査のチェックを入れるのはもちろんですが、今回のAcitivityLogで追加された設定である「単一レコード監査」「複数レコード監査」も確認できます。

前者がフォームなどでレコードを表示した場合(Retrieve)のログを出力し、後者が一覧画面やExcelエクスポートなどでレコードを表示した場合(RetrieveMultiple)のログ出力設定です。

読み取りはやはり1番ログを発生させやすいので、こういった形で細かく区切られているのだと思います。必要なものにチェックを入れて、「保存」→「公開」すれば設定は完了です。

f:id:sugimomoto:20190710001413p:plain

Office365 セキュリティ・コンプライアンスセンターの設定

次にOffice365 セキュリティ・コンプライアンスセンターで監査ログの有効化を行います。

セキュリティ・コンプライアンスセンターには「protection.office.com」のURLでアクセスできます。

アクセスしたら、左ナビゲーションから「検索」→「監査ログの検索」を選択します。デフォルトの環境では監査が有効化されていないので、以下のようにボタンをクリックします。

f:id:sugimomoto:20190710001421p:plain

※ちなみに、アカウントを取得したばかりだと、以下のように表示されません。少し時間を置いてアクセスし直す必要があります。(トライアルを取得したばかりの時がこうでした。)

f:id:sugimomoto:20190710001429p:plain

監査を有効化すると、以下のように監査の検索ができるようになります。ただ、最初はデータがクローリングされるまでにまた時間がかかるみたいです。1日くらい置いたほうがいいかもです。

f:id:sugimomoto:20190710001436p:plain

実際に監査ログを検索するには、そのまま検索ボタンを押してもいいですが、ここにはDynamics以外の監査ログも表示されるので、Dynamics 365 のアクティビティだけに絞ったほうがいいです。

f:id:sugimomoto:20190710001444p:plain

これで以下のように Dynamics 365 のActivityLogが表示されます。

f:id:sugimomoto:20190710001453p:plain

PowerApps CDS ではどうなの?

さすが同じアーキテクチャ! 同じように利用可能です!

f:id:sugimomoto:20190710001502p:plain