从 Azure Function 查询 Dataverse 审计日志
Query Dataverse audit logs from Azure Function
我对此很陌生所以请原谅我
我们有一个需求Every X days, query changes made in tables/records in dataverse and send email with these changes
据我所知,这可以通过 Power Automate 来完成,因此每 7 天 运行 一个 HTTP 触发器会触发一个 C# 函数,该函数查询审计日志并发送一封带有 table 发生了变化。
我的测试环境中有审计日志记录,它显示了对 table 所做的更改,这是我不确定的其余部分。
我遇到的主要问题是如何从 C# Azure Function 应用程序查询 dataverse 审计日志?
使用 Azure 函数
您可以使用 audits
实体集名称对 Dataverse 网络 API 执行 HTTP 请求。该请求类似于:
GET /api/data/v9.2/audits HTTP/1.1
Host: {organizationUniqueName}.{region}.dynamics.com
Authorization: Bearer eyJ0eXAi...
请注意,您需要在请求中提供持有者身份验证令牌(有关查询 Dataverse 网络的综合指南,请参阅 Use OAuth authentication with Microsoft Dataverse for details on how to do that. See Query data using the Web API API。
或者,您可以使用以下任一 NuGet 包通过 C# 查询 Dataverse。
- Microsoft.CrmSdk.CoreAssemblies(仅适用于 Azure 函数运行时 1.x)
- Microsoft.PowerPlatform.Dataverse.Client(Public 预览。适用于运行时 2.x+)
无论您选择使用哪个包,C# 代码看起来都差不多,除了 ServiceClient
适用于第二个 NuGet 包,CrmServiceClient
适用于第二个 NuGet 包第一个包裹。
var client = new CrmServiceClient(connectionString);
var auditLogsQuery =
@"<fetch top='50' >
<entity name='audit' >
<filter>
<condition attribute='operation' operator='eq' value='1' />
<condition attribute='createdon' operator='last-x-hours' value='1' />
</filter>
</entity>
</fetch>";
EntityCollection auditLogs = client.RetrieveMultiple(new FetchExpression(auditLogsQuery));
使用 Power Automate
看到你提到了Power Automate的使用,我建议你考虑使用它来满足你的要求。通过内置的 Dataverse 连接器查询 Dataverse 中的数据是 Power Automate 的原生功能。
假设您有以下 Fetch XML 查询来提取操作 Create
(1) 并且操作是在过去一小时内执行的所有审核日志。
Tip: You can use the FetchXML Builder plugin in the XrmToolBox to author these queries. Querying the audit logs in the advanced find is not supported.
<fetch top="50" >
<entity name="audit" >
<filter>
<condition attribute="operation" operator="eq" value="1" />
<condition attribute="createdon" operator="last-x-hours" value="1" />
</filter>
</entity>
</fetch>
使用 Dataverse List rows
操作,您可以指定要查询 Audits
table 并在 [=19= 中提供上述 Fetch XML 查询] 属性 的动作。请参阅下面的示例:
此查询的结果现在可在整个 Power Automate 云流程中使用。例如,这里我使用 Compose
操作为返回的审计日志写出 Operation
、Record Type
、Record ID
和 Changed Field
。
我对此很陌生所以请原谅我
我们有一个需求Every X days, query changes made in tables/records in dataverse and send email with these changes
据我所知,这可以通过 Power Automate 来完成,因此每 7 天 运行 一个 HTTP 触发器会触发一个 C# 函数,该函数查询审计日志并发送一封带有 table 发生了变化。
我的测试环境中有审计日志记录,它显示了对 table 所做的更改,这是我不确定的其余部分。
我遇到的主要问题是如何从 C# Azure Function 应用程序查询 dataverse 审计日志?
使用 Azure 函数
您可以使用 audits
实体集名称对 Dataverse 网络 API 执行 HTTP 请求。该请求类似于:
GET /api/data/v9.2/audits HTTP/1.1
Host: {organizationUniqueName}.{region}.dynamics.com
Authorization: Bearer eyJ0eXAi...
请注意,您需要在请求中提供持有者身份验证令牌(有关查询 Dataverse 网络的综合指南,请参阅 Use OAuth authentication with Microsoft Dataverse for details on how to do that. See Query data using the Web API API。
或者,您可以使用以下任一 NuGet 包通过 C# 查询 Dataverse。
- Microsoft.CrmSdk.CoreAssemblies(仅适用于 Azure 函数运行时 1.x)
- Microsoft.PowerPlatform.Dataverse.Client(Public 预览。适用于运行时 2.x+)
无论您选择使用哪个包,C# 代码看起来都差不多,除了 ServiceClient
适用于第二个 NuGet 包,CrmServiceClient
适用于第二个 NuGet 包第一个包裹。
var client = new CrmServiceClient(connectionString);
var auditLogsQuery =
@"<fetch top='50' >
<entity name='audit' >
<filter>
<condition attribute='operation' operator='eq' value='1' />
<condition attribute='createdon' operator='last-x-hours' value='1' />
</filter>
</entity>
</fetch>";
EntityCollection auditLogs = client.RetrieveMultiple(new FetchExpression(auditLogsQuery));
使用 Power Automate
看到你提到了Power Automate的使用,我建议你考虑使用它来满足你的要求。通过内置的 Dataverse 连接器查询 Dataverse 中的数据是 Power Automate 的原生功能。
假设您有以下 Fetch XML 查询来提取操作 Create
(1) 并且操作是在过去一小时内执行的所有审核日志。
Tip: You can use the FetchXML Builder plugin in the XrmToolBox to author these queries. Querying the audit logs in the advanced find is not supported.
<fetch top="50" >
<entity name="audit" >
<filter>
<condition attribute="operation" operator="eq" value="1" />
<condition attribute="createdon" operator="last-x-hours" value="1" />
</filter>
</entity>
</fetch>
使用 Dataverse List rows
操作,您可以指定要查询 Audits
table 并在 [=19= 中提供上述 Fetch XML 查询] 属性 的动作。请参阅下面的示例:
此查询的结果现在可在整个 Power Automate 云流程中使用。例如,这里我使用 Compose
操作为返回的审计日志写出 Operation
、Record Type
、Record ID
和 Changed Field
。