Récupérer l’historique de modifications de données auditées

Lorsque vous activez l’audit et modifiez des données dans les tables et colonnes auditées, vous pouvez récupérer l’historique des modifications pour ces tables et colonnes.

Vous ne pouvez pas accéder aux données d’audit à l’aide du point de terminaison Dataverse TDS (SQL).

L’historique d’audit n’est pas disponible pour les tables de l’application mobile.

Table d’audit

La table Auditing (Audit) stocke les événements d’audit. Dans l’API web, l’audit EntityType est la ressource pour ces données. La table d’audit est en lecture seule.

La table d’audit fournit les données pour l’option Voir le résumé de l’audit affichée dans le centre d’administration Power Platform.

Assurez-vous que l’utilisateur appelant a le prvReadAuditSummary privilège de récupérer des données de la table.

Le tableau suivant résume les colonnes importantes de la table d’audit.

SchemaName
LogicalName
DisplayName
Type Description
Action
action
Événement
Option Représente l’événement à l’origine de la modification. En savoir plus sur les actions.
AttributeMask
attributemask
Champ modifié
Memo Lorsque le changement représente une modification de données dans un enregistrement, il contient une liste de nombres séparés par des virgules qui correspondent au AttributeMetadata.ColumnNumber pour les colonnes qui ont été modifiées.

Remarque : n’utilisez pas ces données. Utilisez plutôt les messages pour extraire l’historique des modifications.
AuditId
auditid
ID de l’enregistrement
Identificateur unique Identifie la clé primaire de la table d’audit.
CallingUserId
callinguserid
Appel de l’utilisateur
Rechercher Identifie l’utilisateur appelant lorsque l’emprunt d’identité est utilisé pour l’opération ; sinon, valeur nulle.
CreatedOn
createdon
Date de modification
Date et heure Identifie le moment où l’enregistrement d’audit a été créé, c’est-à-dire lorsque l’opération de l’utilisateur a eu lieu.
En juillet 2025, la précision de cette valeur a été améliorée pour inclure des millisecondes. Cette modification capture la séquence correcte d’événements d’audit dans les transactions qui ont plusieurs opérations.
ObjectId
objectid
Enregistrer
Rechercher Identifie de façon unique l’enregistrement audité.
ObjectTypeCode
objecttypecode
Entité
EntityName Affiche le nom logique de la table référencée par la colonne objectid.
Operation
operation
Opération
Option Identifie l’opération qui a créé l’enregistrement d’audit ; l’une des quatre valeurs :
1 = Créer
2 = Mettre à jour
3 = Supprimer
4 = Accès
UserId
userid
Modifié par
Rechercher Affiche l’ID de l’utilisateur ayant modifié les données.

Actions d’audit

Utilisez Choix/Options d’action pour filtrer selon les événements spécifiques. Les tables suivantes classent les événements.

Événements de ligne de tableau

Ces événements capturent les modifications apportées à un enregistrement.

Valeur Étiquette Message Description
1 Créer Create Un enregistrement est créé.
2 Mise à jour Update Un enregistrement est mis à jour.
3 Supprimer Delete Un enregistrement est supprimé.
12 Fusion Merge Un enregistrement est fusionné avec un autre.
13 Attribuer Assign La valeur de la colonne ownerid d’un enregistrement de table appartenant à l’utilisateur est modifiée.
41 Changer l’état SetState La valeur de la colonne statecode d’un enregistrement est modifiée.

Événements de partage de fiches

Ces événements capturent les modifications apportées à l’accès à un enregistrement lorsqu’un enregistrement est partagé.

Valeur Étiquette Message Description
14 Partager GrantAccess Un utilisateur se voit accorder des privilèges sur un enregistrement.
48 Modifier le partage ModifyAccess Les privilèges accordés à un utilisateur ont été modifiés.
49 Ne plus partager RevokeAccess L’accès d’un utilisateur à un enregistrement est supprimé.

Événements de relation plusieurs-à-plusieurs

Ces événements capturent les changements pour les relations plusieurs-à-plusieurs.

Valeur Étiquette Message Description
33 Entités associées Associate Un ou plusieurs enregistrements sont associés à un autre.
34 Désassocier des entités Disassociate Un ou plusieurs enregistrements sont dissociés d’un autre.
53 Attribuer un rôle à une équipe Associate Un rôle de sécurité est attribué à une équipe.
54 Supprimer le rôle de l’équipe Disassociate Un rôle de sécurité est supprimé d’une équipe.
55 Attribuer un rôle à un utilisateur Associate Un rôle de sécurité est attribué à un utilisateur.
56 Supprimer un rôle d’un utilisateur Disassociate Un rôle de sécurité est supprimé d’un utilisateur.

Événements d’accès utilisateur

Ces options capturent l’historique de l’accès utilisateur lorsque l’audit de l’accès utilisateur est activé. L’enregistrement d’audit de ces événements a une valeur de la colonne operation de 4.

Valeur Étiquette Description
64 Accès utilisateur via le Web L’utilisateur accède à Dataverse à l’aide d’une application pilotée par modèle.
65 Accès utilisateur via les services Web L’utilisateur accède à Dataverse à l’aide de services web avec un client autre qu’une application pilotée par modèle.
112 L’audit de l’accès utilisateur a démarré L’audit de l’accès utilisateur a commencé.
113 L’audit de l’accès utilisateur s’est arrêté L’audit de l’accès utilisateur a pris fin.

L’Exemple : Auditer l’accès des utilisateurs montre comment utiliser ces options d’action pour auditer l’accès des utilisateurs.

Événements de modification des métadonnées

Ces événements capturent les modifications apportées aux définitions de table et aux colonnes et aux modifications apportées à la table d’organisation.

Valeur Étiquette Description
100 Supprimer l’entité L’utilisateur a supprimé une table.
101 Supprimer l’attribut L’utilisateur a supprimé une colonne.
102 Modification d’audit au niveau de l’entité L’utilisateur a modifié une définition de table pour activer ou désactiver l’audit.
103 Modification d’audit au niveau de l’attribut L’utilisateur a modifié une définition de colonne pour activer ou désactiver l’audit.
104 Modification d’audit au niveau de l’organisation L’utilisateur a modifié les paramètres d’organisation.

Événements de modification de l’audit

Ces événements capturent les modifications apportées aux paramètres d’audit.

Valeur Étiquette Description
105 Audit de l’entité lancé L’audit a été activé pour une table.
106 Audit de l’attribut lancé L’audit a été activé pour une colonne.
107 Audit activé L’audit a été activé pour l’organisation.
108 Audit de l’entité interrompu L’audit a été désactivé pour une table.
109 Audit de l’attribut interrompu L’audit a été désactivé pour un attribut.
110 Audit désactivé L’audit a été désactivé pour une colonne.
111 Suppression du journal d’audit Un journal d’audit a été supprimé.

Événements de modification des rôles de sécurité

Ces événements capturent les modifications apportées aux rôles de sécurité.

Valeur Étiquette Message Description
57 Ajouter des privilèges à un rôle AddPrivilegesRole Des privilèges ont été ajoutés à un rôle.
58 Supprimer des privilèges d’un rôle RemovePrivilegeRole Des privilèges ont été supprimés d’un rôle.
59 Remplacer des privilèges d’un rôle ReplacePrivilegesRole Les privilèges d’un rôle ont été remplacés.

Autres actions

Les options d’action restantes font généralement référence à des opérations auditables qui s’appliquent à des solutions spécifiques, telles que Dynamics 365 Sales, Customer Service et Dynamics 365 Marketing.

Les Étiquettes de ces actions doivent s’aligner sur une valeur SdkMessage.Name qui représente l’action. L’opération spécifique peut être une combinaison du nom de l’action et d’une table. Par exemple, une option avec la valeur 10 et l’étiquette Fermer doit correspondre aux messages CloseIncident ou CloseQuote.

Relations de la table d’audit

La table d’audit a seulement deux relations plusieurs-à-un avec la table systemuser :

Relation Recherche de table d’audit Description
lk_audit_userid userid Associe l’utilisateur à tous les enregistrements d’audit créés en raison des modifications qu’il a apportées.
lk_audit_callinguserid callinguserid Associe l’utilisateur à l’un des enregistrements d’audit qu’il a créés en empruntant l’identité d’un autre utilisateur.

Vous pouvez utiliser ces relations pour filtrer les enregistrements de données d’audit créés pour un utilisateur spécifique.

L’entité d’audit ne prend en charge qu’une seule entité de lien dans une requête. Comme seules deux relations existent avec la table systemuser, cela signifie que vous pouvez inclure des données des colonnes callinguserid ou userid, mais pas les deux en même temps.

Vous ne pouvez pas créer de requêtes à l’aide de QueryExpression ou de FetchXml qui joignent des données d’audit à des tables autres que les deux relations formelles qui existent avec la table systemuser.

Définition de l’EntityType d’audit

À l’aide de l’API web, vous pouvez utiliser la ressource EntityType d’audit pour lire les données de la table d’audit. Les données suivantes correspondent à la définition d’EntityType d’audit issue du document de service $metadata CSDL de l’API Web sans annotations.

<EntityType Name="audit" BaseType="mscrm.crmbaseentity">
  <Key>
      <PropertyRef Name="auditid" />
  </Key>
  <Property Name="operation" Type="Edm.Int32" />
  <Property Name="attributemask" Type="Edm.String" Unicode="false" />
  <Property Name="action" Type="Edm.Int32" />
  <Property Name="useradditionalinfo" Type="Edm.String" Unicode="false" />
  <Property Name="createdon" Type="Edm.DateTimeOffset" />
  <Property Name="objecttypecode" Type="Edm.String" Unicode="false" />
  <Property Name="_callinguserid_value" Type="Edm.Guid" />
  <Property Name="_regardingobjectid_value" Type="Edm.Guid" />
  <Property Name="_objectid_value" Type="Edm.Guid" />
  <Property Name="_userid_value" Type="Edm.Guid" />
  <Property Name="transactionid" Type="Edm.Guid" />
  <Property Name="auditid" Type="Edm.Guid" />
  <NavigationProperty Name="callinguserid" Type="mscrm.systemuser" 
    Nullable="false" Partner="lk_audit_callinguserid">
      <ReferentialConstraint Property="_callinguserid_value" 
        ReferencedProperty="systemuserid" />
  </NavigationProperty>
  <NavigationProperty Name="userid" Type="mscrm.systemuser" 
    Nullable="false" Partner="lk_audit_userid">
      <ReferentialConstraint Property="_userid_value" 
        ReferencedProperty="systemuserid" />
  </NavigationProperty>
</EntityType>

Note

La colonne ChangeData n’est pas incluse dans l’API web EntityType audit. N’utilisez pas ces données. Utilisez plutôt les messages pour extraire l’historique des modifications d’audit.

Exemple : rechercher des enregistrements de contact supprimés par un utilisateur

Les exemples suivants sont des requêtes affichant l’historique d’audit pour les enregistrements de contact supprimés par un utilisateur spécifique.

Les deux requêtes suivantes renvoient la même réponse.

La requête suivante filtre selon la propriété _userid_value de l’enregistrement d’audit où la valeur correspond à <user id>.

Demande :

GET [Organization URI]/api/data/v9.2/audits?$select=_objectid_value,objecttypecode,createdon,_userid_value&$orderby=createdon desc&$filter=operation eq 3 and objecttypecode eq 'contact' and _userid_value eq '<user id>'

Accept: application/json  
OData-MaxVersion: 4.0  
OData-Version: 4.0
If-None-Match: null
Prefer: odata.include-annotations="*" 

La requête suivante accède à la collection d’enregistrements d’audit pour un utilisateur spécifique avec la propriété de navigation lk_audit_userid à valeur de collection de la table systemuser où la valeur systemuserid correspond à <user id>.

Demande :

GET [Organization URI]/api/data/v9.2/systemusers(<user id>)/lk_audit_userid?$select=_objectid_value,objecttypecode,createdon,_userid_value&$orderby=createdon desc&$filter=operation eq 3 and objecttypecode eq 'contact'

Accept: application/json  
OData-MaxVersion: 4.0  
OData-Version: 4.0
If-None-Match: null
Prefer: odata.include-annotations="*" 

Réponse :

HTTP/1.1 200 OK
Preference-Applied: odata.include-annotations="*"

{
  "@odata.context": "[Organization URI]/api/data/v9.2/$metadata#audits(_objectid_value,objecttypecode,createdon,_userid_value)",
  "@Microsoft.Dynamics.CRM.totalrecordcount": -1,
  "@Microsoft.Dynamics.CRM.totalrecordcountlimitexceeded": false,
  "value": [
    {
      "_objectid_value@Microsoft.Dynamics.CRM.lookuplogicalname": "contact",
      "_objectid_value": "0e76dc8a-41b5-ec11-983f-0022482bf046",
      "objecttypecode@OData.Community.Display.V1.FormattedValue": "Contact",
      "objecttypecode": "contact",
      "createdon@OData.Community.Display.V1.FormattedValue": "5/12/2022 3:19 PM",
      "createdon": "2022-05-12T22:19:12Z",
      "_userid_value@Microsoft.Dynamics.CRM.lookuplogicalname": "systemuser",
      "_userid_value@OData.Community.Display.V1.FormattedValue": "FirstName LastName",
      "_userid_value": "4026be43-6b69-e111-8f65-78e7d1620f5e"
    },
    < Other results truncated for brevity>
  ]
}

Récupérer l’historique des modifications d’audit

Pour récupérer les modifications de données auditées, utilisez l’un des messages suivants.

API Web Kit de développement logiciel (SDK) pour .NET Description
Fonction RetrieveAuditDetails Classe RetrieveAuditDetailsRequest Récupère les détails complets de l’audit à partir d’un enregistrement d’audit.
Fonction RetrieveAttributeChangeHistory Classe RetrieveAttributeChangeHistoryRequest Extrayez l’historique de modifications pour une seule colonne d’un enregistrement audité.
Fonction RetrieveRecordChangeHistory Classe RetrieveRecordChangeHistoryRequest Récupère toutes les modifications de données auditées pour un enregistrement spécifique.

Pour utiliser ces messages, vérifiez que vous disposez des autorisations prvReadAuditSummary et prvReadRecordAuditHistory.

Types AuditDetail

Ces messages fournissent des détails supplémentaires qui dépendent du type d’action. Les détails utilisent des types dérivés d’un type de base AuditDetail , comme indiqué dans le tableau suivant.

API Web SDK pour .NET Description
type complexe AuditDetail Classe AuditDetail Affiche le type de base pour les classes dérivées. Fournit l’accès à l’enregistrement d’audit.
AttributeAuditDetail ComplexType Classe AttributeAuditDetail Fournit des détails lorsque des modifications de données se produisent pour un enregistrement. Permet d’accéder aux anciennes valeurs et aux nouvelles valeurs.
Renvoyé par les types d’actions suivants :
- Événements de ligne de tableau
- Événements de modification des métadonnées
- Événements de modification d’audit
RelationshipAuditDetail ComplexType Classe RelationshipAuditDetail Fournit des détails lorsque des enregistrements sont associés ou dissociés à l’aide d’une relation Plusieurs-à-plusieurs. Fournit le nom de la relation et une liste des enregistrements modifiés par l’opération.
Renvoyés par les événements de relation plusieurs-à-plusieurs.
RolePrivilegeAuditDetail ComplexType Classe RolePrivilegeAuditDetail Fournit des détails lorsque les définitions des enregistrements de Rôle de sécurité (Rôle) changent. Fournit des informations sur les anciens et nouveaux privilèges de rôle associés au rôle.
Retourné par les événements de changement de rôle de sécurité.
ShareAuditDetail ComplexType Classe ShareAuditDetail Fournit des détails lorsqu’un enregistrement est partagé ou non partagé ou lorsque le niveau d’accès à un enregistrement partagé change.
Retourné par les événements de partage d’enregistrement.
ComplexType UserAccessAuditDetail Classe UserAccessAuditDetail Fournit des détails pour le suivi de l’audit des accès utilisateurs. Fournit des détails sur l’intervalle et le temps d’accès.
Renvoyé par les événements d’accès utilisateur.

Important

  • Les types d’API web répertoriés précédemment qui héritent de ComplexType AuditDetail ne renvoient pas la valeur de propriété de navigation AuditRecord qu’ils devraient hériter de AuditDetail. Le SDK pour les classes .NET renvoie ces données.

  • Les valeurs de colonne volumineuses incluses dans les propriétés NewValueAttributeAuditDetail ou OldValue, telles que Email.Description ou Annotation, sont limitées à 5 Ko ou environ 5 000 caractères. Reconnaître une valeur de colonne limitée par les points de suspension (...) à la fin du texte ; par exemple, « lorem ipsum, lorem ip... ». Étant donné que les données sont tronquées, vous ne pouvez pas l’utiliser pour restaurer les modifications apportées à ces valeurs de colonne.

message RetrieveAuditDetails

Utilisez ce message pour récupérer les détails d’audit d’un seul enregistrement d’audit.

RetrieveAuditDetails est une fonction liée à la table d’audit. Incluez l’en-tête de requête Prefer: odata.include-annotations="*" pour obtenir des valeurs mises en forme.

L’exemple suivant montre le ComplexType AttributeAuditDetail renvoyé lorsque l’parentaccountid est défini sur un enregistrement de type account.

Demande :

GET [Organization URI]/api/data/v9.2/audits(12869c65-d7d3-ec11-b656-281878f0eba9)/Microsoft.Dynamics.CRM.RetrieveAuditDetails

Accept: application/json  
OData-MaxVersion: 4.0  
OData-Version: 4.0
If-None-Match: null
Prefer: odata.include-annotations="*" 

Réponse :

HTTP/1.1 200 OK
OData-Version: 4.0
Preference-Applied: odata.include-annotations="*"

{
 "@odata.context": "[Organization URI]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.RetrieveAuditDetailsResponse",
 "AuditDetail": {
  "@odata.type": "#Microsoft.Dynamics.CRM.AttributeAuditDetail",
  "InvalidNewValueAttributes": [],
  "LocLabelLanguageCode": 0,
  "DeletedAttributes": {
   "Count": 0,
   "Keys": [],
   "Values": []
  },
  "OldValue": {
   "@odata.type": "#Microsoft.Dynamics.CRM.account"
  },
  "NewValue": {
   "@odata.type": "#Microsoft.Dynamics.CRM.account",
   "_parentaccountid_value@OData.Community.Display.V1.FormattedValue": "A. Datum Corporation",
   "_parentaccountid_value@Microsoft.Dynamics.CRM.associatednavigationproperty": "parentaccountid",
   "_parentaccountid_value@Microsoft.Dynamics.CRM.lookuplogicalname": "account",
   "_parentaccountid_value": "d249d106-38b5-ec11-983f-002248296cd0"
  }
 }
}

En savoir plus sur :

message RetrieveAttributeChangeHistory

Utilisez ce message pour récupérer une liste des modifications pour une colonne de table spécifique.

Utilisez le paramètre PagingInfo pour contrôler le nombre d’enregistrements à renvoyer et avancer ou reculer dans les pages. Pour les requêtes ultérieures, définissez la propriété PagingInfo.PagingCookie à la valeur renvoyée par AuditDetailCollection.PagingCookie.

Les modifications apportées à ce message sont toujours du type AttributeAuditDetail.

Cet exemple renvoie un seul historique des modifications audité pour la colonne description d’un enregistrement d’une table account.

Demande :

GET [Organization URI]/api/data/v9.2/RetrieveAttributeChangeHistory(Target=@target,AttributeLogicalName=@attributeLogicalName,PagingInfo=@paginginfo)?
@target={ '@odata.id':'accounts(611e7713-68d7-4622-b552-85060af450bc)'}
&@attributeLogicalName='description'
&@paginginfo={
   "PageNumber": 1,
   "Count": 1,
   "ReturnTotalRecordCount": true
}

Accept: application/json  
OData-MaxVersion: 4.0  
OData-Version: 4.0
If-None-Match: null

Réponse :

HTTP/1.1 200 OK

{
 "@odata.context": "[Organization URI]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.RetrieveAttributeChangeHistoryResponse",
 "AuditDetailCollection": {
  "MoreRecords": true,
  "PagingCookie": "<cookie page=\"1\"><cookieExtensions ContinuationToken=\"{&quot;pageNumber&quot;:2,&quot;continuationToken&quot;:&quot;[{\\&quot;compositeToken\\&quot;:{\\&quot;token\\&quot;:null,\\&quot;range\\&quot;:{\\&quot;min\\&quot;:\\&quot;3A800000000000000000000000000000\\&quot;,\\&quot;max\\&quot;:\\&quot;3B000000000000000000000000000000\\&quot;}},\\&quot;orderByItems\\&quot;:[{\\&quot;item\\&quot;:\\&quot;2022-05-13T22:06:46.6175613Z\\&quot;}],\\&quot;rid\\&quot;:\\&quot;CVoNAJIidnNsmz0AAADwAw==\\&quot;,\\&quot;skipCount\\&quot;:0,\\&quot;filter\\&quot;:null}]&quot;}\" /></cookie>",
  ,
  "TotalRecordCount": 3,
  "AuditDetails": [
   {
    "@odata.type": "#Microsoft.Dynamics.CRM.AttributeAuditDetail",
    "InvalidNewValueAttributes": [],
    "LocLabelLanguageCode": 0,
    "DeletedAttributes": {
     "Count": 0,
     "Keys": [],
     "Values": []
    },
    "OldValue": {
     "@odata.type": "#Microsoft.Dynamics.CRM.account",
     "description": "Old description value"
    },
    "NewValue": {
     "@odata.type": "#Microsoft.Dynamics.CRM.account",
     "description": "New description value"
    }
   }
  ]
 }
}

En savoir plus sur :

Message « RetrieveRecordChangeHistory »

Le message RetrieveRecordChangeHistory affiche l’historique des modifications de données pour l’enregistrement indiqué par le paramètre Target.

Utilisez le paramètre PagingInfo pour contrôler le nombre d’enregistrements à renvoyer et avancer ou reculer dans les pages. Pour les requêtes ultérieures, définissez la propriété PagingInfo.PagingCookie à la valeur renvoyée par le AuditDetailCollection.PagingCookie.

Les résultats de ce message s’affichent généralement en tant que données affichées dans les applications basées sur des AttributeAuditDetail modèles lorsque vous sélectionnez Associé>. Il affiche les anciennes valeurs et les nouvelles valeurs des enregistrements, mais il renvoie également les types RelationshipAuditDetail et ShareAuditDetail.

Vous pouvez également utiliser ce message avec les role et systemuser tables pour renvoyer des types UserAccessAuditDetail et RolePrivilegeAuditDetail.

L’exemple suivant renvoie uniquement les deux premières des quatre modifications d’un enregistrement de compte.

Demande :

GET [Organization URI]/api/data/v9.2/RetrieveRecordChangeHistory(Target=@target,PagingInfo=@paginginfo)?
@target={ '@odata.id':'accounts(611e7713-68d7-4622-b552-85060af450bc)'}
&@paginginfo={
   "PageNumber": 1,
   "Count": 2,
   "ReturnTotalRecordCount": true
}
Accept: application/json  
OData-MaxVersion: 4.0  
OData-Version: 4.0
If-None-Match: null

Réponse :

HTTP/1.1 200 OK

{
 "@odata.context": "[Organization URI]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.RetrieveRecordChangeHistoryResponse",
 "AuditDetailCollection": {
  "MoreRecords": true,
  "PagingCookie": "<cookie page=\"1\"><cookieExtensions ContinuationToken=\"{&quot;pageNumber&quot;:2,&quot;continuationToken&quot;:&quot;[{\\&quot;compositeToken\\&quot;:{\\&quot;token\\&quot;:null,\\&quot;range\\&quot;:{\\&quot;min\\&quot;:\\&quot;38000000000000000000000000000000\\&quot;,\\&quot;max\\&quot;:\\&quot;38800000000000000000000000000000\\&quot;}},\\&quot;orderByItems\\&quot;:[{\\&quot;item\\&quot;:\\&quot;2022-05-13T22:06:27.8029732Z\\&quot;}],\\&quot;rid\\&quot;:\\&quot;CVoNAJIidnPOnT0AAAAICA==\\&quot;,\\&quot;skipCount\\&quot;:0,\\&quot;filter\\&quot;:null}]&quot;}\" /></cookie>",
  "TotalRecordCount": 4,
  "AuditDetails": [
   {
    "@odata.type": "#Microsoft.Dynamics.CRM.AttributeAuditDetail",
    "InvalidNewValueAttributes": [],
    "LocLabelLanguageCode": 0,
    "DeletedAttributes": {
     "Count": 0,
     "Keys": [],
     "Values": []
    },
    "OldValue": {
     "@odata.type": "#Microsoft.Dynamics.CRM.account",
     "description": "Old description value"
    },
    "NewValue": {
     "@odata.type": "#Microsoft.Dynamics.CRM.account",
     "description": "New description value"
    }
   },
   {
    "@odata.type": "#Microsoft.Dynamics.CRM.AttributeAuditDetail",
    "InvalidNewValueAttributes": [],
    "LocLabelLanguageCode": 0,
    "DeletedAttributes": {
     "Count": 0,
     "Keys": [],
     "Values": []
    },
    "OldValue": {
     "@odata.type": "#Microsoft.Dynamics.CRM.account",
     "_ownerid_value@OData.Community.Display.V1.FormattedValue": "FirstName LastName",
     "_ownerid_value@Microsoft.Dynamics.CRM.associatednavigationproperty": "ownerid",
     "_ownerid_value@Microsoft.Dynamics.CRM.lookuplogicalname": "systemuser",
     "_ownerid_value": "4026be43-6b69-e111-8f65-78e7d1620f5e"
    },
    "NewValue": {
     "@odata.type": "#Microsoft.Dynamics.CRM.account",
     "_ownerid_value@OData.Community.Display.V1.FormattedValue": "TeamName",
     "_ownerid_value@Microsoft.Dynamics.CRM.associatednavigationproperty": "ownerid",
     "_ownerid_value@Microsoft.Dynamics.CRM.lookuplogicalname": "team",
     "_ownerid_value": "39e0dbe4-131b-e111-ba7e-78e7d1620f5e"
    }
   }
  ]
 }
}

Note

Les valeurs ComplexType AuditDetail renvoyées actuellement n’incluent pas la propriété AuditRecord, donc il n’y a pas de données concernant qui a effectué la modification et à quel moment.

En savoir plus sur :

Voir aussi

Présentation de l’audit
Configurer la journalisation d’audit
Supprimer les données d’audit
Gérer l’audit Dataverse
Exemple : Auditer les modifications des données de table
Exemple : Audit de l’accès des utilisateurs