首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

MSCRM 4.0 數據審核插件:實現字段級變更追踪與系統日志記錄

     編輯:關於.NET

MSCRM 4.0 原生無審計日志功能。本文介紹一款成熟的 數據審核插件,通過註冊 Pre/Post Operation 插件攔截 Create/Update/Delete 消息,對比屬性變更,將舊值/新值/操作用戶/時間寫入自定義 SystemLog 實體,並提供配置界面動態控制審核範圍 (實體/字段級)。

功能架構

  • 部署管理器:獨立 WinForm 工具,連接 CRM 服務器,按組織啟用/停用審核。
  • 配置實體:LogConfig (日志管理) — 維護審核實體與字段白名單。
  • 日志實體:SystemLog (系統日志) — 記錄 EntityName, FieldName, OldValue, NewValue, Operator, OperationTime, OperationType。
  • 插件程序集:註冊在 PreOperation (捕獲舊值) 與 PostOperation (寫入日志) 階段。

部署管理器操作流程

  1. CRM 應用服務器運行安裝包 → 開始菜單生成「MSCRMLog 部署管理器」。
  2. 選中目標組織 → 右鍵「啟用」 → 自動註冊插件步驟、創建配置/日志實體。
  3. 進入 CRM Web → 設置 → 自定義 → 實體 → 出現「日志管理」「系統日志」兩個新實體。

審核配置界面 (日志管理實體表單)

  • 快速搜索實體:輸入實體名 (如 account) 過濾。
  • 字段級勾選:列出實體所有屬性,勾選需審核字段 (如 name, revenue, ownerid)。
  • 保存即時生效:插件讀取配置實體緩存,無需 IISRESET。

日志記錄示例 (系統日志實體視圖)

實體字段舊值新值操作用戶時間操作類型
accountname舊客戶名新客戶名張三2010-01-15 10:30Update
contactemailaddress1(空)a@b.com李四2010-01-15 10:35Create
opportunitystatecodeOpenWon王五2010-01-15 10:40Update

技術實現要點

// 插件核心邏輯 (簡化)
public void Execute(IPluginExecutionContext context)
{
    if (context.MessageName == "Update" && context.InputParameters.Contains("Target"))
    {
        var target = (DynamicEntity)context.InputParameters["Target"];
        var preImage = context.PreEntityImages["PreImage"]; // 需註冊預像
        var postImage = context.PostEntityImages["PostImage"];

        foreach (var attr in target.Properties)
        {
            if (IsFieldAudited(target.Name, attr.Key)) // 讀取配置緩存
            {
                var oldVal = preImage.Properties.Contains(attr.Key) ? preImage[attr.Key] : null;
                var newVal = postImage.Properties.Contains(attr.Key) ? postImage[attr.Key] : null;
                if (!Object.Equals(oldVal, newVal))
                {
                    CreateLogEntry(target.Name, attr.Key, oldVal, newVal, context.InitiatingUserId, "Update");
                }
            }
        }
    }
}

性能與部署建議

  • 異步註冊:插件註冊為 Asynchronous,避免阻塞主業務事務。
  • 批量寫入:高頻實體考慮緩存日志定時批量 Create。
  • 權限隔離:SystemLog 實體僅系統管理員可讀,防止數據洩露。
  • 升級兼容:MSCRM 2011+ 原生支援 稽核 功能,建議遷移時關閉插件改用原生。

獲取資源

文末提供:插件源碼 (C#)、部署管理器安裝包、配置實體定義 XML、註冊工具配置文件。歡迎下載集成。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved