Extraire l’historique de modifications de données auditées
Après avoir activé l’audit et modifié les données dans les tables et colonnes auditées, vous pouvez commencer à extraire l’historique des modifications de ces tables et colonnes.
Les données d’audit ne sont pas disponibles à l’aide du point de terminaison (SQL) TDS Dataverse.
L’historique d’audit n’est pas disponible pour les tables dans l’application mobile.
Table d’audit
Les événements d’audit sont stockés dans la Table d’audit. Dans l’API web, l’EntityType de l’audit 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 Afficher le résumé de l’audit affichée dans le centre d’administration Power Platform.
Veillez à ce que l’utilisateur appelant a le privilège prvReadAuditSummary
pour récupérer les 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, 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 Utilisateur appelant |
Lookup | Identifier l’utilisateur appelant lorsque l’emprunt d’identité est utilisé pour l’opération ; sinon, valeur nulle. |
CreatedOn createdon Date de modification |
DateHeure | Identifie lorsque l’enregistrement d’audit a été créé, c’est-à-dire lorsque l’opération de l’utilisateur a eu lieu. |
ObjectId objectid Enregistrer |
Lookup | Identifie de façon unique l’enregistrement audité. |
ObjectTypeCode objecttypecode Entité |
Nom de l’entité | 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 |
Lookup | Affiche l’ID de l’utilisateur ayant modifié les données. |
Actions d’audit
Utilisez Choix/Options Action pour filtrer selon les événements spécifiques. Les tables suivantes classent les événements.
Événements de ligne de table
Ces événements capturent les modifications apportées à un enregistrement.
Valeur | Étiquette | Message | Description |
---|---|---|---|
1 | Créer | Create |
Un enregistrement est créé. |
2 | Mettre à jour | Update |
Un enregistrement est mis à jour. |
3 | Supprimer | Delete |
Un enregistrement est supprimé. |
12 | Fusionner | 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 | Définir l’état | SetState |
La valeur de la colonne statecode d’un enregistrement est modifiée. |
Événements de partage d’enregistrement
Ces événements capturent les modifications apportées à l’accès aux enregistrements 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 changé. |
49 | Annuler le partage | RevokeAccess |
L’accès d’un utilisateur à un enregistrement est supprimé. |
Événements de relation de plusieurs à plusieurs
Ces événements capturent les changements pour plusieurs relations.
active | Étiquette | Message | Description |
---|---|---|---|
33 | Associer des entités | Associate |
Un ou plusieurs enregistrements sont associés à un autre. |
34 | Dissocier 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 un rôle d’une é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
4.
active | Étiquette | Description |
---|---|---|
64 | Accès utilisateur via le web | L’utilisateur accès à 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 utilisant 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 de colonne ainsi que les modifications apportées à la table d’organisation.
Valeur | Étiquette | Description |
---|---|---|
100 | Supprimer une entité | L’utilisateur a supprimé une table. |
101 | Supprimer un attribut | L’utilisateur a supprimé une colonne. |
102 | Auditer les modifications au niveau de l’entité | L’utilisateur a modifié une définition de table pour activer ou désactiver l’audit. |
103 | Auditer les modifications au niveau de l’attribut | L’utilisateur a modifié une définition de colonne pour activer ou désactiver l’audit. |
104 | Auditer les modifications au niveau de l’organisation | L’utilisateur a modifié les paramètres d’organisation. |
Événements de modification d’audit
Ces événements capturent les modifications apportées aux paramètres d’audit.
active | Étiquette | Description |
---|---|---|
105 | Audit de l’entité démarré | Un audit a été activé pour une table. |
106 | Audit de l’attribut démarré | 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é.
active | É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 table d’audit
La table d’audit n’a que deux Relations Plusieurs-à-un avec la table systemuser
:
Relationship | Recherche dans la 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 EntityType d’audit
Avec l’API web, vous utiliserez la ressource EntityType audit pour lire les données depuis la table d’audit. Les données suivantes sont la définition EntityType audit depuis l’API web document $Metadata Service CSDL 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 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
affectée à une 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>
]
}
Extraire l’historique des modifications d’audit
Vous pouvez utiliser un des trois messages pour extraire les modifications de données qui sont auditées.
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, vous devez avoir les privilèges prvReadRecordAuditHistory
et prvReadAuditSummary
.
Types de détails d’audit
Ces messages fournissent des détails supplémentaires qui dépendent du type d’action. Les détails sont mis en œuvre à l’aide de différents types dérivés d’un type de base AuditDetail
, comme indiqué dans la table suivante.
API web | Kit de développement logiciel (SDK) pour .NET | Description |
---|---|---|
ComplexType AuditDetail | Classe AuditDetail | Affiche le type de base pour les classes dérivées. Fournit l’accès à l’enregistrement d’audit. |
ComplexType AttributeAuditDetail | 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 table - Événements de modification des métadonnées - Événements de modification d’audit |
ComplexType RelationshipAuditDetail | 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. |
ComplexType RolePrivilegeAuditDetail | Classe RolePrivilegeAuditDetail | Fournit des détails lorsque les définitions des enregistrements 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. Renvoyé par les Événements de modification des rôles de sécurité. |
ComplexType ShareAuditDetail | 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. Renvoyé par les Événements de partage d’enregistrements. |
ComplexType UserAccessAuditDetail | Classe UserAccessAuditDetail | Fournit des détails pour suivre l’audit de l’accès des utilisateurs. Fournit des détails sur l’intervalle et le moment de l’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
dont ils devraient hériter deAuditDetail
. Le SDK pour les classes .NET renvoie ces données.Les grandes valeurs de colonne incluses dans les propriétés
AttributeAuditDetail
OldValue
ouNewValue
telles que Email.Description ou Annotation sont limitées (plafonnées) à 5 Ko or ~5 000 caractères de longueur. Une valeur de colonne plafonnée peut être reconnue par des points de suspension (…) à la fin du texte ; par exemple, « lorem ipsum, lorem ip… » Les données étant tronquées, vous ne pouvez pas les 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="*"
, vous obtiendrez 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 le 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 de 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=\"{"pageNumber":2,"continuationToken":"[{\\"compositeToken\\":{\\"token\\":null,\\"range\\":{\\"min\\":\\"3A800000000000000000000000000000\\",\\"max\\":\\"3B000000000000000000000000000000\\"}},\\"orderByItems\\":[{\\"item\\":\\"2022-05-13T22:06:46.6175613Z\\"}],\\"rid\\":\\"CVoNAJIidnNsmz0AAADwAw==\\",\\"skipCount\\":0,\\"filter\\":null}]"}\" /></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 un 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 sont généralement considérés comme les données AttributeAuditDetail
affichées dans les applications pilotées par modèle lorsque vous sélectionnez Associé>Historique d’audit. Ils affichent les anciennes valeurs et les nouvelles valeurs des enregistrements, mais ils renvoient également les types RelationshipAuditDetail
et ShareAuditDetail
.
Ce message peut également être utilisé avec les tables systemuser
et role
pour renvoyer les types RolePrivilegeAuditDetail
et UserAccessAuditDetail
.
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=\"{"pageNumber":2,"continuationToken":"[{\\"compositeToken\\":{\\"token\\":null,\\"range\\":{\\"min\\":\\"38000000000000000000000000000000\\",\\"max\\":\\"38800000000000000000000000000000\\"}},\\"orderByItems\\":[{\\"item\\":\\"2022-05-13T22:06:27.8029732Z\\"}],\\"rid\\":\\"CVoNAJIidnPOnT0AAAAICA==\\",\\"skipCount\\":0,\\"filter\\":null}]"}\" /></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 fait le changement et quand il est disponible.
En savoir plus sur :
Voir aussi
Présentation de l’audit
Configurer l’audit
Supprimer des données d’audit
Gérer les audits Dataverse
Exemple : Auditer les modifications des données d’entité
Exemple : Audit de l'accès utilisateur