Configure auditing
Microsoft Dataverse auditing uses settings in the Organization table and definitions of individual tables and columns to determine what kind of audit history data to capture. Anyone can view the configuration, but you must have the System Administrator or System Customizer role to change the settings. Changes made to the audit configuration are included in the audit history.
Configure organization settings
Four properties in the Organization table control how auditing is enabled for an environment. The organization table contains a single row. The organizationid
column is the primary key. Query the row directly to get the key value, or execute the WhoAmI
message and take the value of the WhoAmIResponse.OrganizationId
property.
The following table describes the organization table columns that control auditing behavior.
Schema Name Logical Name Display Name |
Type | Description |
---|---|---|
IsAuditEnabled isauditenabled Is Auditing Enabled |
Boolean | Whether auditing is enabled for the environment |
AuditRetentionPeriodV2 auditretentionperiodv2 Audit Retention Period Settings |
Integer | The number of days to retain audit log records The default value is 30. Valid values are between 1 and 365,000 days (~1,000 years). If the value is set to -1, the records are retained forever. Administrator's guide: Start/stop auditing and set retention policy |
IsUserAccessAuditEnabled isuseraccessauditenabled Is User Access Auditing Enabled |
Boolean | Whether user access logging is enabled Auditing for the environment must be enabled for user access logging to be enabled. |
UserAccessAuditingInterval useraccessauditinginterval User Authentication Auditing Interval |
Integer | How often user access is logged, in hours The default value is 4. |
Retrieve organization settings
Use the following queries to retrieve your organization settings.
Request:
GET [Organization URI]/api/data/v9.2/organizations?$select=
isauditenabled,
auditretentionperiodv2,
isuseraccessauditenabled,
useraccessauditinginterval HTTP/1.1
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Response:
HTTP/1.1 200 OK
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#organizations(isauditenabled,auditretentionperiodv2,isuseraccessauditenabled,useraccessauditinginterval)",
"value": [
{
"@odata.etag": "W/\"67404512\"",
"isauditenabled": true,
"auditretentionperiodv2": 30,
"isuseraccessauditenabled": true,
"useraccessauditinginterval": 4,
"organizationid": "<organizationid value>"
}
]
}
Learn more about:
Change organization settings
Change the column values in the organization table to change how auditing works for the environment. You must have the System Administrator or System Customizer role to change these settings.
You can use Web API or Dataverse SDK for .NET to change your organization settings:
Configure tables and columns
When auditing is enabled for the organization, any tables that are enabled for auditing write audit data for all columns that are enabled for auditing. The primary control is at the organization and then the table level.
Tables and columns each have a managed property named IsAuditEnabled
that controls whether they're enabled for auditing.
Item | Web API | SDK for .NET |
---|---|---|
Table | EntityMetadata.IsAuditEnabled |
EntityMetadata.IsAuditEnabled Property |
Column | AttributeMetadata.IsAuditEnabled |
AttributeMetadata.IsAuditEnabled Property |
The IsAuditEnabled
property is a managed property that's defined by the following types:
Web API | SDK for .NET |
---|---|
BooleanManagedProperty ComplexType | BooleanManagedProperty Class |
A BooleanManagedProperty
has two important properties:
Property | Description |
---|---|
Value |
Determines whether the setting is enabled. |
CanBeChanged |
Determines whether the Value setting can be changed after the table or column is included in a managed solution. |
The publisher of a managed solution that adds a table may prevent people who install the solution from enabling auditing. Some Dataverse system tables can't be enabled or disabled for auditing because the CanBeChanged
property is set to false
. Learn more about managed properties.
Note
The IsAuditEnabled
property is exposed in the designer as a simple boolean property with the label Audit changes to its data for tables or Enable auditing for columns. The CanBeChanged
property can only be read or set programmatically.
Detect which tables are enabled for auditing
Query the table definitions and look at the IsAuditEnabled
property to determine which tables support auditing and which ones can be changed.
This query returns the Logicalname
for all public tables that are enabled for auditing.
Request:
GET [Organization URI]/api/data/v9.2/EntityDefinitions?$select=
LogicalName,
IsAuditEnabled
&$filter=IsAuditEnabled/Value eq true
and IsPrivate eq false
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Response:
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#EntityDefinitions(LogicalName,IsAuditEnabled)",
"value": [
{
"LogicalName": "account",
"MetadataId": "70816501-edb9-4740-a16c-6a5efbc05d84",
"IsAuditEnabled": {
"Value": true,
"CanBeChanged": true,
"ManagedPropertyLogicalName": "canmodifyauditsettings"
}
},
< list truncated for brevity >
]
}
Learn more about:
Detect which columns are enabled for auditing
Query the column definitions and look at the IsAuditEnabled
property to determine which columns support auditing and which ones can be changed.
Request:
GET [Organization URI]/api/data/v9.0/EntityDefinitions(LogicalName='account')/Attributes?$select=
LogicalName,
IsAuditEnabled
&$filter=IsAuditEnabled/Value eq true
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Response:
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#EntityDefinitions('account')/Attributes(LogicalName,IsAuditEnabled)",
"value": [
{
"@odata.type": "#Microsoft.Dynamics.CRM.StringAttributeMetadata",
"LogicalName": "emailaddress3",
"MetadataId": "97fb4aae-ea5d-427f-9b2b-9a6b9754286e",
"IsAuditEnabled": {
"Value": true,
"CanBeChanged": true,
"ManagedPropertyLogicalName": "canmodifyauditsettings"
}
},
< list truncated for brevity >
]
}
Learn more about: Query table definitions using the Web API
Enable or disable tables and columns for auditing
To change which tables and columns support auditing, update their IsAuditEnabled.Value
property.
Tables
API | Property | More information |
---|---|---|
Web API | EntityMetadata.IsAuditEnabled.Value |
Update table definitions |
SDK for .NET | EntityMetadata.IsAuditEnabled.Value |
Retrieve and update a table |
Columns
API | Property | More information |
---|---|---|
Web API | AttributeMetadata.IsAuditEnabled.Value |
Update a column |
SDK for .NET | AttributeMetadata.IsAuditEnabled.Value |
Update a column |
Important
Changes don't take effect until you publish the table customizations.
Publish column changes
Use the PublishXml
message to publish customizations for the table.
Request:
POST [Organization URI]/api/data/v9.2/PublishXml HTTP/1.1
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
{
"ParameterXml": "<importexportxml><entities><entity>account</entity></entities></importexportxml>"
}
Response:
HTTP/1.1 204 OK
Learn more about:
Learn more about:
See also
Administrator's guide: Manage Dataverse auditing
Administrator's guide: System Settings Auditing tab
Auditing overview
Retrieve the history of audited data changes
Delete audit data