> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bijection.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Microsoft Dataverse (Dataverse 365)

> Resources, examples, configuration and evidence for Microsoft Dataverse (Dataverse 365).

Use the `@bijection/connectors/dataverse` entrypoint to declare Microsoft Dataverse (Dataverse 365) resources.

## Availability

This page describes the pinned source package. Published availability is unestablished for this artifact. [Source build and package availability](https://docs.bijection.com/client/sdk-distribution.md).

## Resources and modes

| Resource | Mode | Description |
| - | - | - |
| Table | `changes` | Change tracking with conditional writes |

Declare a resource in application code, then bind deployment-specific settings and credentials. See [typed resources](https://docs.bijection.com/integrations/resources.md), [connections](https://docs.bijection.com/integrations/connections.md) and [source inspection](https://docs.bijection.com/integrations/cli.md).

## Table

### changes: Change tracking with conditional writes

The following example matches configuration `standard`.

```ts theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
import { dataverse } from "@bijection/connectors/dataverse";
import { v } from "bijection/values";
import { makeFunctionReference } from "bijection/server";

export const accounts = dataverse.table.changes({
  logicalName: "account",
  metadata: {
    semantics: {
      fields: {
        revenue: {
          labels: {},
          currency: ["transactioncurrencyid"],
          unit: null,
          text: null,
          language: false,
        },
      },
      actions: {},
      lookups: {},
      joins: {},
      unsupported: [],
    },
    acquisition_profile: "dataverse_standard_changes_v1",
    native_type: "accounts",
    keys: ["accountid"],
    fields: {
      accountid: {
        native_type: "Edm.Guid",
        encoding: "dataverse_guid",
        length_facet: null,
        picklist_values: [],
        representation: "string",
        nullable: false,
        length: null,
        precision: null,
        scale: null,
        reference_to: [],
        readable: true,
        createable: false,
        updateable: false,
        external_id: false,
        unique: true,
      },
      name: {
        native_type: "Edm.String",
        encoding: "text",
        length_facet: null,
        picklist_values: [],
        representation: "string",
        nullable: true,
        length: 160,
        precision: null,
        scale: null,
        reference_to: [],
        readable: true,
        createable: false,
        updateable: true,
        external_id: false,
        unique: false,
      },
      revenue: {
        native_type: "Edm.Decimal",
        encoding: "dataverse_money_2",
        length_facet: null,
        picklist_values: [],
        representation: "decimal_text",
        nullable: true,
        length: null,
        precision: null,
        scale: null,
        reference_to: [],
        readable: true,
        createable: false,
        updateable: true,
        external_id: false,
        unique: false,
      },
      transactioncurrencyid: {
        native_type: "Edm.Guid",
        encoding: "dataverse_lookup",
        length_facet: null,
        picklist_values: [],
        representation: "reference",
        nullable: true,
        length: null,
        precision: null,
        scale: null,
        reference_to: ["transactioncurrency"],
        readable: true,
        createable: false,
        updateable: false,
        external_id: false,
        unique: false,
      },
    },
    relationships: [],
    queryable: true,
    retrieveable: true,
  },
  schema: {
    accountid: v.string(),
    name: v.union(v.string(), v.null()),
    revenue: v.union(v.string(), v.null()),
    transactioncurrencyid: v.union(
      v.object({ entity: v.string(), id: v.string() }),
      v.null(),
    ),
  },
  access: {
    read: makeFunctionReference<"query", any, [null]>("permissions:accounts"),
    reads: [],
  },
});
```

> **Inferred record types**
>
> ```ts theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
> {
>   "name": string | { id: string; entity: string; } | null;
>   "revenue": string | { id: string; entity: string; } | null;
>   "transactioncurrencyid": string | { id: string; entity: string; } | null;
>   "accountid": string | { id: string; entity: string; } | null;
> }
> ```

The function references identify application policy queries. Implement those policies in your application; the references alone grant no authority.

#### Configuration: standard

Case: `dataverse/table/changes/standard`.

Connection and resource configuration are declared by this exact case.

Credential kind: `odata`. Keep credential material in the private credential inventory.

| Setting | Type | Required | Owner |
| - | - | - | - |
| `annotationDocuments` | array of string | No | Resource binding |
| `serviceUrl` | string | Yes | Shared connection |
| `entitySet` | string | Yes | Resource binding |
| `version` | "v2" or "v4" | Yes | Shared connection |
| `sapClient` | string or null | No | Resource binding |
| `pageSize` | number or null | No | Shared connection |

> **Complete configuration contract**
>
> ```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
> {
>   "setup": [],
>   "resource": {
>     "access": {
>       "records": {
>         "read": {
>           "query": "permissions:accounts"
>         },
>         "reads": []
>       }
>     },
>     "defaults": {
>       "entitySet": "accounts",
>       "version": "v4"
>     },
>     "metadata": {
>       "provider": {
>         "kind": "dataverse",
>         "api_version": "v9.2"
>       },
>       "object": "account",
>       "reference_targets": {},
>       "schema": {
>         "semantics": {
>           "lookups": {},
>           "actions": {},
>           "fields": {
>             "revenue": {
>               "labels": {},
>               "currency": [
>                 "transactioncurrencyid"
>               ],
>               "unit": null,
>               "text": null,
>               "language": false
>             }
>           },
>           "joins": {},
>           "unsupported": []
>         },
>         "acquisition_profile": "dataverse_standard_changes_v1",
>         "native_type": "accounts",
>         "keys": [
>           "accountid"
>         ],
>         "fields": {
>           "accountid": {
>             "native_type": "Edm.Guid",
>             "encoding": "dataverse_guid",
>             "length_facet": null,
>             "picklist_values": [],
>             "representation": "string",
>             "nullable": false,
>             "length": null,
>             "precision": null,
>             "scale": null,
>             "reference_to": [],
>             "readable": true,
>             "createable": false,
>             "updateable": false,
>             "external_id": false,
>             "unique": false
>           },
>           "name": {
>             "native_type": "Edm.String",
>             "encoding": "text",
>             "length_facet": null,
>             "picklist_values": [],
>             "representation": "string",
>             "nullable": true,
>             "length": 160,
>             "precision": null,
>             "scale": null,
>             "reference_to": [],
>             "readable": true,
>             "createable": false,
>             "updateable": false,
>             "external_id": false,
>             "unique": false
>           },
>           "revenue": {
>             "native_type": "Edm.Decimal",
>             "encoding": "dataverse_money_2",
>             "length_facet": null,
>             "picklist_values": [],
>             "representation": "decimal_text",
>             "nullable": true,
>             "length": null,
>             "precision": null,
>             "scale": null,
>             "reference_to": [],
>             "readable": true,
>             "createable": false,
>             "updateable": false,
>             "external_id": false,
>             "unique": false
>           },
>           "transactioncurrencyid": {
>             "native_type": "Edm.Guid",
>             "encoding": "dataverse_lookup",
>             "length_facet": null,
>             "picklist_values": [],
>             "representation": "reference",
>             "nullable": true,
>             "length": null,
>             "precision": null,
>             "scale": null,
>             "reference_to": [
>               "transactioncurrency"
>             ],
>             "readable": true,
>             "createable": false,
>             "updateable": false,
>             "external_id": false,
>             "unique": false
>           }
>         },
>         "relationships": [],
>         "queryable": true,
>         "retrieveable": true
>       }
>     },
>     "connector": "odata",
>     "output": {
>       "kind": "single",
>       "collection": "records"
>     },
>     "credential_kind": "odata",
>     "connection_fields": [
>       "serviceUrl",
>       "version",
>       "pageSize"
>     ]
>   },
>   "connection_setup": {
>     "type": "object",
>     "value": {
>       "annotationDocuments": {
>         "fieldType": {
>           "type": "array",
>           "value": {
>             "type": "string"
>           }
>         },
>         "optional": true
>       },
>       "serviceUrl": {
>         "fieldType": {
>           "type": "string"
>         },
>         "optional": false
>       },
>       "entitySet": {
>         "fieldType": {
>           "type": "string"
>         },
>         "optional": false
>       },
>       "version": {
>         "fieldType": {
>           "type": "union",
>           "value": [
>             {
>               "type": "literal",
>               "value": "v2"
>             },
>             {
>               "type": "literal",
>               "value": "v4"
>             }
>           ]
>         },
>         "optional": false
>       },
>       "sapClient": {
>         "fieldType": {
>           "type": "union",
>           "value": [
>             {
>               "type": "string"
>             },
>             {
>               "type": "null"
>             }
>           ]
>         },
>         "optional": true
>       },
>       "pageSize": {
>         "fieldType": {
>           "type": "union",
>           "value": [
>             {
>               "type": "number"
>             },
>             {
>               "type": "null"
>             }
>           ]
>         },
>         "optional": true
>       }
>     }
>   },
>   "execution": null
> }
> ```

Native admission analysis is available for this exact declaration.

**Collection: records**

| Contract | Meaning |
| - | - |
| Initial | Current membership |
| Changes | Current record read after a change indication |
| Deletions | Explicit deletion evidence |
| Resume | Opaque cursor |
| Gap | Explicit repair required after a gap |
| Retention | Unspecified |

> **Complete native profile**
>
> ```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
> {
>   "movement": {
>     "exchanges": {},
>     "nativeInputLimitBytes": "0",
>     "steps": [
>       {
>         "id": "acquire.1",
>         "inputs": [],
>         "action": {
>           "operation": "acquire",
>           "subject": "native input",
>           "limitBytes": "0"
>         }
>       },
>       {
>         "id": "retain.1",
>         "inputs": [
>           "acquire.1"
>         ],
>         "action": {
>           "operation": "retain",
>           "subject": "acquisition evidence",
>           "reason": "recovery",
>           "release": "acquisition_custody"
>         }
>       },
>       {
>         "id": "interpret.1",
>         "inputs": [
>           "retain.1"
>         ],
>         "action": {
>           "operation": "interpret",
>           "subject": "acquired input",
>           "produces": "records"
>         }
>       },
>       {
>         "id": "materialize.1",
>         "inputs": [
>           "interpret.1"
>         ],
>         "action": {
>           "operation": "materialize",
>           "subject": "source rows",
>           "reason": "serving",
>           "release": "replacement"
>         }
>       },
>       {
>         "id": "publish.1",
>         "inputs": [
>           "materialize.1"
>         ],
>         "action": {
>           "operation": "publish",
>           "subject": "source rows",
>           "visibility": "with_acquisition"
>         }
>       }
>     ]
>   },
>   "initial": "current_membership",
>   "changes": "current_state_after_change",
>   "deletions": "explicit_events",
>   "resume": "opaque_cursor",
>   "retentionMs": null,
>   "gap": "explicit_repair",
>   "limits": {
>     "entities_per_request": "100",
>     "exchange_evidence_bytes": "524288",
>     "publication_page_records": "128",
>     "record_fields": "32"
>   },
>   "restrictions": [],
>   "commands": {}
> }
> ```

> **Commands, occurrences and artifacts**
>
> ```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
> {
>   "records": {
>     "records": {
>       "protocol": "record_observation",
>       "coverage": "incremental_snapshot",
>       "consistency": "observations",
>       "atomicity": "record",
>       "history": "observations",
>       "recordRefresh": false,
>       "reconciliation": false,
>       "notifications": false,
>       "snapshotMaxRows": null,
>       "profile": {
>         "movement": {
>           "exchanges": {},
>           "nativeInputLimitBytes": "0",
>           "steps": [
>             {
>               "id": "acquire.1",
>               "inputs": [],
>               "action": {
>                 "operation": "acquire",
>                 "subject": "native input",
>                 "limitBytes": "0"
>               }
>             },
>             {
>               "id": "retain.1",
>               "inputs": [
>                 "acquire.1"
>               ],
>               "action": {
>                 "operation": "retain",
>                 "subject": "acquisition evidence",
>                 "reason": "recovery",
>                 "release": "acquisition_custody"
>               }
>             },
>             {
>               "id": "interpret.1",
>               "inputs": [
>                 "retain.1"
>               ],
>               "action": {
>                 "operation": "interpret",
>                 "subject": "acquired input",
>                 "produces": "records"
>               }
>             },
>             {
>               "id": "materialize.1",
>               "inputs": [
>                 "interpret.1"
>               ],
>               "action": {
>                 "operation": "materialize",
>                 "subject": "source rows",
>                 "reason": "serving",
>                 "release": "replacement"
>               }
>             },
>             {
>               "id": "publish.1",
>               "inputs": [
>                 "materialize.1"
>               ],
>               "action": {
>                 "operation": "publish",
>                 "subject": "source rows",
>                 "visibility": "with_acquisition"
>               }
>             }
>           ]
>         },
>         "initial": "current_membership",
>         "changes": "current_state_after_change",
>         "deletions": "explicit_events",
>         "resume": "opaque_cursor",
>         "retentionMs": null,
>         "gap": "explicit_repair",
>         "limits": {
>           "entities_per_request": "100",
>           "exchange_evidence_bytes": "524288",
>           "publication_page_records": "128",
>           "record_fields": "32"
>         },
>         "restrictions": [],
>         "commands": {}
>       }
>     }
>   },
>   "occurrences": null,
>   "artifacts": {
>     "raw_archive": false,
>     "native_file_transfer_limit_bytes": null,
>     "external_versions": false,
>     "files": {}
>   },
>   "commands": {}
> }
> ```

**Recorded checks**

| Requirement | Scope | Evidence | Result |
| - | - | - | - |
| page-publication-recovery | \{"kind":"collection","name":"records"} | The native OData reader's page slicing and delta recovery have controlled histories; none runs a Dataverse response. | Execution result unavailable |

Hosted qualification: **unestablished for this catalog configuration**. Installed connections report their own identity, authority and current status.

#### Configuration: writes

Case: `dataverse/table/changes/writes`.

Connection and resource configuration are declared by this exact case.

Credential kind: `odata`. Keep credential material in the private credential inventory.

| Setting | Type | Required | Owner |
| - | - | - | - |
| `annotationDocuments` | array of string | No | Resource binding |
| `serviceUrl` | string | Yes | Shared connection |
| `entitySet` | string | Yes | Resource binding |
| `version` | "v2" or "v4" | Yes | Shared connection |
| `sapClient` | string or null | No | Resource binding |
| `pageSize` | number or null | No | Shared connection |

> **Complete configuration contract**
>
> ```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
> {
>   "setup": [],
>   "resource": {
>     "access": {
>       "records": {
>         "read": {
>           "query": "permissions:accounts"
>         },
>         "reads": []
>       }
>     },
>     "defaults": {
>       "entitySet": "accounts",
>       "version": "v4"
>     },
>     "metadata": {
>       "provider": {
>         "kind": "dataverse",
>         "api_version": "v9.2"
>       },
>       "object": "account",
>       "reference_targets": {},
>       "schema": {
>         "semantics": {
>           "lookups": {},
>           "actions": {},
>           "fields": {
>             "revenue": {
>               "labels": {},
>               "currency": [
>                 "transactioncurrencyid"
>               ],
>               "unit": null,
>               "text": null,
>               "language": false
>             }
>           },
>           "joins": {},
>           "unsupported": []
>         },
>         "acquisition_profile": "dataverse_standard_changes_v1",
>         "native_type": "accounts",
>         "keys": [
>           "accountid"
>         ],
>         "fields": {
>           "accountid": {
>             "native_type": "Edm.Guid",
>             "encoding": "dataverse_guid",
>             "length_facet": null,
>             "picklist_values": [],
>             "representation": "string",
>             "nullable": false,
>             "length": null,
>             "precision": null,
>             "scale": null,
>             "reference_to": [],
>             "readable": true,
>             "createable": false,
>             "updateable": false,
>             "external_id": false,
>             "unique": false
>           },
>           "name": {
>             "native_type": "Edm.String",
>             "encoding": "text",
>             "length_facet": null,
>             "picklist_values": [],
>             "representation": "string",
>             "nullable": true,
>             "length": 160,
>             "precision": null,
>             "scale": null,
>             "reference_to": [],
>             "readable": true,
>             "createable": false,
>             "updateable": true,
>             "external_id": false,
>             "unique": false
>           },
>           "revenue": {
>             "native_type": "Edm.Decimal",
>             "encoding": "dataverse_money_2",
>             "length_facet": null,
>             "picklist_values": [],
>             "representation": "decimal_text",
>             "nullable": true,
>             "length": null,
>             "precision": null,
>             "scale": null,
>             "reference_to": [],
>             "readable": true,
>             "createable": false,
>             "updateable": false,
>             "external_id": false,
>             "unique": false
>           },
>           "transactioncurrencyid": {
>             "native_type": "Edm.Guid",
>             "encoding": "dataverse_lookup",
>             "length_facet": null,
>             "picklist_values": [],
>             "representation": "reference",
>             "nullable": true,
>             "length": null,
>             "precision": null,
>             "scale": null,
>             "reference_to": [
>               "transactioncurrency"
>             ],
>             "readable": true,
>             "createable": false,
>             "updateable": false,
>             "external_id": false,
>             "unique": false
>           }
>         },
>         "relationships": [],
>         "queryable": true,
>         "retrieveable": true
>       }
>     },
>     "connector": "odata",
>     "output": {
>       "kind": "single",
>       "collection": "records"
>     },
>     "credential_kind": "odata",
>     "connection_fields": [
>       "serviceUrl",
>       "version",
>       "pageSize"
>     ]
>   },
>   "connection_setup": {
>     "type": "object",
>     "value": {
>       "annotationDocuments": {
>         "fieldType": {
>           "type": "array",
>           "value": {
>             "type": "string"
>           }
>         },
>         "optional": true
>       },
>       "serviceUrl": {
>         "fieldType": {
>           "type": "string"
>         },
>         "optional": false
>       },
>       "entitySet": {
>         "fieldType": {
>           "type": "string"
>         },
>         "optional": false
>       },
>       "version": {
>         "fieldType": {
>           "type": "union",
>           "value": [
>             {
>               "type": "literal",
>               "value": "v2"
>             },
>             {
>               "type": "literal",
>               "value": "v4"
>             }
>           ]
>         },
>         "optional": false
>       },
>       "sapClient": {
>         "fieldType": {
>           "type": "union",
>           "value": [
>             {
>               "type": "string"
>             },
>             {
>               "type": "null"
>             }
>           ]
>         },
>         "optional": true
>       },
>       "pageSize": {
>         "fieldType": {
>           "type": "union",
>           "value": [
>             {
>               "type": "number"
>             },
>             {
>               "type": "null"
>             }
>           ]
>         },
>         "optional": true
>       }
>     }
>   },
>   "execution": null
> }
> ```

Native admission analysis is available for this exact declaration.

**Collection: records**

| Contract | Meaning |
| - | - |
| Initial | Current membership |
| Changes | Current record read after a change indication |
| Deletions | Explicit deletion evidence |
| Resume | Opaque cursor |
| Gap | Explicit repair required after a gap |
| Retention | Unspecified |

> **Complete native profile**
>
> ```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
> {
>   "movement": {
>     "exchanges": {},
>     "nativeInputLimitBytes": "0",
>     "steps": [
>       {
>         "id": "acquire.1",
>         "inputs": [],
>         "action": {
>           "operation": "acquire",
>           "subject": "native input",
>           "limitBytes": "0"
>         }
>       },
>       {
>         "id": "retain.1",
>         "inputs": [
>           "acquire.1"
>         ],
>         "action": {
>           "operation": "retain",
>           "subject": "acquisition evidence",
>           "reason": "recovery",
>           "release": "acquisition_custody"
>         }
>       },
>       {
>         "id": "interpret.1",
>         "inputs": [
>           "retain.1"
>         ],
>         "action": {
>           "operation": "interpret",
>           "subject": "acquired input",
>           "produces": "records"
>         }
>       },
>       {
>         "id": "materialize.1",
>         "inputs": [
>           "interpret.1"
>         ],
>         "action": {
>           "operation": "materialize",
>           "subject": "source rows",
>           "reason": "serving",
>           "release": "replacement"
>         }
>       },
>       {
>         "id": "publish.1",
>         "inputs": [
>           "materialize.1"
>         ],
>         "action": {
>           "operation": "publish",
>           "subject": "source rows",
>           "visibility": "with_acquisition"
>         }
>       }
>     ]
>   },
>   "initial": "current_membership",
>   "changes": "current_state_after_change",
>   "deletions": "explicit_events",
>   "resume": "opaque_cursor",
>   "retentionMs": null,
>   "gap": "explicit_repair",
>   "limits": {
>     "entities_per_request": "100",
>     "exchange_evidence_bytes": "524288",
>     "publication_page_records": "128",
>     "record_fields": "32"
>   },
>   "restrictions": [],
>   "commands": {
>     "remove": {
>       "target": "records",
>       "delivery": "single_attempt",
>       "condition": "target_version",
>       "replayWindowMs": null,
>       "maxDeliveryHours": "1",
>       "providerEnforcedExpiry": false
>     },
>     "update": {
>       "target": "records",
>       "delivery": "single_attempt",
>       "condition": "target_version",
>       "replayWindowMs": null,
>       "maxDeliveryHours": "1",
>       "providerEnforcedExpiry": false
>     }
>   }
> }
> ```

**Commands**

| Command | Target | Condition | Delivery |
| - | - | - | - |
| `remove` | records | Target version precondition | Single dispatch attempt |
| `update` | records | Target version precondition | Single dispatch attempt |

> **Commands, occurrences and artifacts**
>
> ```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
> {
>   "records": {
>     "records": {
>       "protocol": "record_observation",
>       "coverage": "incremental_snapshot",
>       "consistency": "observations",
>       "atomicity": "record",
>       "history": "observations",
>       "recordRefresh": false,
>       "reconciliation": false,
>       "notifications": false,
>       "snapshotMaxRows": null,
>       "profile": {
>         "movement": {
>           "exchanges": {},
>           "nativeInputLimitBytes": "0",
>           "steps": [
>             {
>               "id": "acquire.1",
>               "inputs": [],
>               "action": {
>                 "operation": "acquire",
>                 "subject": "native input",
>                 "limitBytes": "0"
>               }
>             },
>             {
>               "id": "retain.1",
>               "inputs": [
>                 "acquire.1"
>               ],
>               "action": {
>                 "operation": "retain",
>                 "subject": "acquisition evidence",
>                 "reason": "recovery",
>                 "release": "acquisition_custody"
>               }
>             },
>             {
>               "id": "interpret.1",
>               "inputs": [
>                 "retain.1"
>               ],
>               "action": {
>                 "operation": "interpret",
>                 "subject": "acquired input",
>                 "produces": "records"
>               }
>             },
>             {
>               "id": "materialize.1",
>               "inputs": [
>                 "interpret.1"
>               ],
>               "action": {
>                 "operation": "materialize",
>                 "subject": "source rows",
>                 "reason": "serving",
>                 "release": "replacement"
>               }
>             },
>             {
>               "id": "publish.1",
>               "inputs": [
>                 "materialize.1"
>               ],
>               "action": {
>                 "operation": "publish",
>                 "subject": "source rows",
>                 "visibility": "with_acquisition"
>               }
>             }
>           ]
>         },
>         "initial": "current_membership",
>         "changes": "current_state_after_change",
>         "deletions": "explicit_events",
>         "resume": "opaque_cursor",
>         "retentionMs": null,
>         "gap": "explicit_repair",
>         "limits": {
>           "entities_per_request": "100",
>           "exchange_evidence_bytes": "524288",
>           "publication_page_records": "128",
>           "record_fields": "32"
>         },
>         "restrictions": [],
>         "commands": {
>           "remove": {
>             "target": "records",
>             "delivery": "single_attempt",
>             "condition": "target_version",
>             "replayWindowMs": null,
>             "maxDeliveryHours": "1",
>             "providerEnforcedExpiry": false
>           },
>           "update": {
>             "target": "records",
>             "delivery": "single_attempt",
>             "condition": "target_version",
>             "replayWindowMs": null,
>             "maxDeliveryHours": "1",
>             "providerEnforcedExpiry": false
>           }
>         }
>       }
>     }
>   },
>   "occurrences": null,
>   "artifacts": {
>     "raw_archive": false,
>     "native_file_transfer_limit_bytes": null,
>     "external_versions": false,
>     "files": {}
>   },
>   "commands": {
>     "remove": {
>       "target": "records",
>       "condition": {
>         "kind": "target_version",
>         "from": {
>           "kind": "record_version"
>         }
>       },
>       "delivery": {
>         "kind": "single_attempt",
>         "retention": {
>           "kind": "unknown"
>         },
>         "max_delivery_hours": 1
>       }
>     },
>     "update": {
>       "target": "records",
>       "condition": {
>         "kind": "target_version",
>         "from": {
>           "kind": "record_version"
>         }
>       },
>       "delivery": {
>         "kind": "single_attempt",
>         "retention": {
>           "kind": "unknown"
>         },
>         "max_delivery_hours": 1
>       }
>     }
>   }
> }
> ```

**Recorded checks**

| Requirement | Scope | Evidence | Result |
| - | - | - | - |
| page-publication-recovery | \{"kind":"collection","name":"records"} | The native OData reader's page slicing and delta recovery have controlled histories; none runs a Dataverse response. | Execution result unavailable |
| command-response-lost | \{"kind":"command","name":"remove"} | No retained check covers this scoped Dataverse requirement; no Dataverse environment has been reached. | Execution result unavailable |
| command-response-lost | \{"kind":"command","name":"update"} | No retained check covers this scoped Dataverse requirement; no Dataverse environment has been reached. | Execution result unavailable |

Hosted qualification: **unestablished for this catalog configuration**. Installed connections report their own identity, authority and current status.

## Provider guidance

Capture selected tables with `bijection source metadata capture dataverse`, then
select generated `crm.account.fields` in `crm.account.resource`. This resource
uses the native OData v4 acquisition and durable-command owners. The low-level
`dataverse.table.changes` constructor also requires normalized metadata.

Bind `serviceUrl` to the exact HTTPS `/api/data/v9.2/` root. The resource supplies
the captured entity-set name and v4 default. Its `dataverse.credential` reference
uses existing OData credential custody. The private credential envelope is:

```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "auth": {
    "kind": "client_credentials",
    "token_url": "https://login.microsoftonline.com/<tenant-guid>/oauth2/v2.0/token",
    "client_id": "<application-id>",
    "client_secret": "<private-secret>",
    "scope": "https://<environment>.crm.dynamics.com/.default"
  }
}
```

The native owner checks the authority and audience before sending the secret,
uses `WhoAmI` to retain organization and application-user identity, and validates
selected standard-table metadata. Change tracking and optimistic concurrency
must already be enabled. Enabling change tracking remains an administrator's
explicit action. Secured columns, elastic/virtual tables, unsupported types and
ambiguous lookup targets refuse.

Initial reads follow native next links to a delta link. Tracked requests contain
no `$filter`, `$orderby`, `$expand` or `$top`. Lookup rows retain their target table
and GUID; money remains exact text with its currency dependency; date behavior
participates in compatibility. The resource exposes observations with ETags,
not a consistent population snapshot or an audit history.
Currency-dependent precision is not a fixed column scale. Base-currency money
columns remain unsupported until organization currency is captured explicitly.

Declare named scalar updates with `dataverse.update({ fields, governingRule })`
and deletes with `dataverse.remove({ governingRule })` on the generated resource's
`commands`. Every command uses the retained target ETag and single-attempt
delivery. A lost answer remains unknown. Current matching values are not a
receipt, and local publication remains independent of command confirmation.
Creates, upserts, custom actions, delegated authentication and attachments are
outside this profile. Certificate assertions are not TLS client certificates.

Microsoft Project (Project for the web and Planner premium plans; Project
Online retired on 2026-09-30) keeps plans in Dataverse tables such as
`msdyn_project`, `msdyn_projecttask`, `msdyn_projectbucket`,
`msdyn_resourceassignment` and `msdyn_projecttaskdependency`. Capture and read
them like any table, provided change tracking is enabled on each. The Project
scheduling service owns these tables: Microsoft documents changes only through
the Project schedule APIs, which application users cannot call, so a resource
over a scheduling table refuses `update` and `remove` commands.

The catalog's schema is synthetic. Source fixtures and generated declarations do
not establish a passing native run or live provider qualification. No Dataverse
environment has been reached by these fixtures.

## Provider references

Provider references and prerequisites are maintained in the connector guidance above. No separate provider-documentation review date is recorded.

## Source and evidence

[Canonical connector source](https://github.com/bijectionhq/component-support/blob/b632604330ce9cbcfe17a5a680ef4fbe80f6f672/packages/connectors/src/connectors/dataverse/README.md), [native analysis](https://github.com/bijectionhq/component-support/blob/b632604330ce9cbcfe17a5a680ef4fbe80f6f672/packages/connectors/contract-analysis.json) and [check receipts](https://github.com/bijectionhq/component-support/blob/b632604330ce9cbcfe17a5a680ef4fbe80f6f672/packages/connectors/evidence.json).

Connector artifact: `905888ea276a2a28e36981a79e8142b2547ea451c3e63162cb6915ad4a7d1305`.

The resource declaration examples above are compiled and compared with exact catalog declarations. Recorded checks apply only to their source, declaration and runtime identities. Configure a connection and inspect its status to establish deployment-specific readiness.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.