Isystem.PowerShell.PowerPlatform.Dataverse

1.0.0

Session-based cmdlets for Microsoft Dataverse (Power Platform, Dynamics 365): CRUD, upsert by alternate key, batches, transactions, FetchXML and paging. Authenticates with connection string, client secret, certificate, managed identity, Isystem.AzAuth modes, or a delegated user sign-in whose token cache the caller stores (Key Vault) for environments without applicatio
Session-based cmdlets for Microsoft Dataverse (Power Platform, Dynamics 365): CRUD, upsert by alternate key, batches, transactions, FetchXML and paging. Authenticates with connection string, client secret, certificate, managed identity, Isystem.AzAuth modes, or a delegated user sign-in whose token cache the caller stores (Key Vault) for environments without application users.
Show more

Minimum PowerShell version

7.5

Installation Options

Copy and Paste the following command to install this package using PowerShellGet More Info

Install-Module -Name Isystem.PowerShell.PowerPlatform.Dataverse

Copy and Paste the following command to install this package using Microsoft.PowerShell.PSResourceGet More Info

Install-PSResource -Name Isystem.PowerShell.PowerPlatform.Dataverse

You can deploy this package directly to Azure Automation. Note that deploying packages with dependencies will deploy all the dependencies to Azure Automation. Learn More

Manually download the .nupkg file to your system's default download location. Note that the file won't be unpacked, and won't include any dependencies. Learn More

Owners

Copyright

(c) Isystem. All rights reserved.

Package Details

Author(s)

  • Ondrej Kracmar

Tags

Dataverse PowerPlatform Dynamics365 CRM PowerApps Upsert Windows Linux MacOS

Cmdlets

Connect-PSDataverse Disconnect-PSDataverse Get-PSDataverseConnection Get-PSDataverseRecord Get-PSDataverseRecordCount Find-PSDataverseRecord Test-PSDataverseRecord New-PSDataverseRecord Set-PSDataverseRecord Remove-PSDataverseRecord Invoke-PSDataverseBatch Invoke-PSDataverseTransaction Invoke-PSDataverseFetchXml Get-PSDataverseTokenCache

PSEditions

Core

Dependencies

This module has no dependencies.

Release Notes

## [1.0.0] - 2026-09-21

First public release (PowerShell Gallery). Breaking changes against the internal 0.1.0 are listed under **Changed**.

### Added
- **Upsert and alternate keys.** `Set-PSDataverseRecord -Key @{ ... } -Upsert` creates or updates
 a record addressed by an alternate key and returns a `DataverseUpsertResult` (`Id`,
 `RecordCreated`). `Get-`, `Set-`, `Remove-` and `Test-PSDataverseRecord` all accept `-Key`
 instead of `-Id`. Batch and transaction operations gained `Action = 'Upsert'` and a `Key`
 entry for Update/Upsert/Delete. This is the primitive an idempotent sync is built on.
- **Lookups without SDK types.** Any attribute value written as
 `@{ LogicalName = 'account'; Id = $guid }` or
 `@{ LogicalName = 'it3c_company'; Key = @{ it3c_name = 'Acme' } }` becomes an
 `EntityReference` - the SDK equivalent of an OData `@odata.bind`. `PSObject`-wrapped values
 are unwrapped before they reach the SDK serializer.
- **Delegated sign-in with a portable token cache.** `Connect-PSDataverse -Delegated` signs a
 user in through MSAL with an *in-memory* cache; `Get-PSDataverseTokenCache` exports it as
 one opaque string and `-TokenCache` seeds the next session with it. The refresh token thus
 lives wherever the caller keeps secrets (Azure Key Vault via PSDataRepository, for
 instance), which is what Dataverse for Teams - no application users, no premium licence -
 requires. `-LoginMode Silent` makes unattended runs fail fast instead of prompting;
 `Interactive` / `DeviceCode` cover the one-time bootstrap. The cache survives
 `Disconnect-PSDataverse` so it can be persisted after the work is done.
- **Isystem.AzAuth authentication.** `Connect-PSDataverse -AuthMode` acquires tokens through
 `Isystem.AzAuth.Core` with the same mode names PSDataRepository uses: `ClientSecret`,
 `ClientCertificate` (thumbprint, file or `X509Certificate2`), `ManagedIdentity`,
 `WorkloadIdentity`, `NonInteractive` (Azure.Identity default chain), `Interactive`,
 `DeviceCode` and `Cache` (named on-disk MSAL cache). Device-code prompts are relayed to the
 host from the pipeline thread.
- **Structured batch results.** `DataverseBatchResult.Items` carries one
 `DataverseBatchItemResult` per operation - `Index`, `Action`, `LogicalName`, the record
 `Id` (created, upserted or targeted), `Succeeded`, `RecordCreated`, `ErrorCode` and
 `Message`. Operations that never ran because an earlier one faulted (without
 `-ContinueOnError`) are reported as such instead of vanishing.
- `Get-PSDataverseConnection` reports `OrganizationFriendlyName`, `OrganizationId`,
 `EnvironmentId`, `Identity`, `AuthenticationType` and `HasTokenCache`.
- `Get-PSDataverseRecordCount -PrimaryIdAttribute` for tables whose primary key does not
 follow the `{logicalname}id` convention.
- `net10.0` build next to `net9.0`; the new `.psm1` loader picks `bin/<tfm>/` for the running
 PowerShell (7.5 → net9.0, 7.6+ → net10.0), the same way PSSqlRepository and
 PSDataRepository do, so side-by-side modules share one `Microsoft.Extensions.*` major.
- Assemblies are strong-named (public key token `9dfdba2f30eafd53`); see SECURITY.md for what
 that does and does not protect.
- `build/Update-MamlSyntax.ps1` regenerates the MAML syntax blocks from cmdlet metadata so a
 parameter change cannot drift from the shipped help.
- Release pipeline: GitVersion 6.7, Conventional Commits check on pull requests, NuGet
 vulnerability gate, CycloneDX SBOM artifact, strong-name validation of the staged module,
 optional Authenticode signing, publish to Azure Artifacts, the GitHub mirror and the
 PowerShell Gallery from `v*` tags.

### Changed
- **BREAKING - per-record cmdlets raise non-terminating errors.** `Get-`, `New-`, `Set-`,
 `Remove-` and `Test-PSDataverseRecord` now `WriteError` instead of terminating the pipeline,
 so `$ids | Get-PSDataverseRecord` reports one missing record and continues; use
 `-ErrorAction Stop` for the old behaviour. Connection, query, batch and transaction failures
 stay terminating.
- **BREAKING - `Invoke-PSDataverseTransaction` returns a `DataverseBatchResult`** (was the
 operation count) so callers get the ids of created records.
- `Invoke-PSDataverseFetchXml -All` strips a `top` attribute with a warning and refuses
 aggregate queries with a clear error instead of letting Dataverse fail the request.
- `Connect-PSDataverse` reports invalid parameter combinations as `InvalidArgument`
 (`DataverseInvalidConnectionParameter`) rather than as a connection failure.
- The module package no longer carries PowerShell host runtime bits and MSAL satellite
 resources (32 MB → 13 MB per target).

### Fixed
- `tests/general/strings.Tests.ps1` had executed zero tests since February 2026: the assembly
 path was wrong for a `bin/`-based root module and the `::ResourceManager` access on an
 internal type yielded `$null`. `tests/pester.ps1` now counts container-level discovery
 failures, so a broken test file can no longer pass CI silently.
- `tests/general/FileIntegrity.Tests.ps1` had a syntax error and never ran.
- `global.json` pinned `10.0.100` with `latestPatch`, which refused every other 10.0.x SDK.
- The committed `TestResults/` folder is gone and ignored.

FileList

  • Isystem.PowerShell.PowerPlatform.Dataverse.nuspec
  • CHANGELOG.md
  • Isystem.PowerShell.PowerPlatform.Dataverse.Format.ps1xml
  • Isystem.PowerShell.PowerPlatform.Dataverse.psd1
  • Isystem.PowerShell.PowerPlatform.Dataverse.psm1
  • LICENSE
  • README.md
  • bin\net10.0\Azure.Core.dll
  • bin\net10.0\Azure.Identity.Broker.dll
  • bin\net10.0\Azure.Identity.dll
  • bin\net10.0\Isystem.AzAuth.Core.dll
  • bin\net10.0\Isystem.PowerShell.PowerPlatform.Dataverse.dll
  • bin\net10.0\Isystem.PowerShell.PowerPlatform.Dataverse.pdb
  • bin\net10.0\Isystem.Shared.Infrastructure.Core.dll
  • bin\net10.0\Isystem.Shared.Infrastructure.PowerPlatform.Dataverse.dll
  • bin\net10.0\Microsoft.Bcl.AsyncInterfaces.dll
  • bin\net10.0\Microsoft.Crm.Sdk.Proxy.dll
  • bin\net10.0\Microsoft.Extensions.Caching.Abstractions.dll
  • bin\net10.0\Microsoft.Extensions.Caching.Memory.dll
  • bin\net10.0\Microsoft.Extensions.Configuration.Abstractions.dll
  • bin\net10.0\Microsoft.Extensions.Configuration.Binder.dll
  • bin\net10.0\Microsoft.Extensions.Configuration.dll
  • bin\net10.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll
  • bin\net10.0\Microsoft.Extensions.DependencyInjection.dll
  • bin\net10.0\Microsoft.Extensions.Diagnostics.Abstractions.dll
  • bin\net10.0\Microsoft.Extensions.FileProviders.Abstractions.dll
  • bin\net10.0\Microsoft.Extensions.Hosting.Abstractions.dll
  • bin\net10.0\Microsoft.Extensions.Http.dll
  • bin\net10.0\Microsoft.Extensions.Logging.Abstractions.dll
  • bin\net10.0\Microsoft.Extensions.Logging.dll
  • bin\net10.0\Microsoft.Extensions.ObjectPool.dll
  • bin\net10.0\Microsoft.Extensions.Options.dll
  • bin\net10.0\Microsoft.Extensions.Primitives.dll
  • bin\net10.0\Microsoft.Identity.Client.Broker.dll
  • bin\net10.0\Microsoft.Identity.Client.Extensions.Msal.dll
  • bin\net10.0\Microsoft.Identity.Client.NativeInterop.dll
  • bin\net10.0\Microsoft.Identity.Client.dll
  • bin\net10.0\Microsoft.IdentityModel.Abstractions.dll
  • bin\net10.0\Microsoft.IdentityModel.JsonWebTokens.dll
  • bin\net10.0\Microsoft.IdentityModel.Logging.dll
  • bin\net10.0\Microsoft.IdentityModel.Tokens.dll
  • bin\net10.0\Microsoft.PowerPlatform.Dataverse.Client.dll
  • bin\net10.0\Microsoft.VisualStudio.Threading.dll
  • bin\net10.0\Microsoft.VisualStudio.Validation.dll
  • bin\net10.0\Microsoft.Xrm.Sdk.dll
  • bin\net10.0\Newtonsoft.Json.dll
  • bin\net10.0\System.ClientModel.dll
  • bin\net10.0\System.Configuration.ConfigurationManager.dll
  • bin\net10.0\System.Diagnostics.EventLog.dll
  • bin\net10.0\System.IdentityModel.Tokens.Jwt.dll
  • bin\net10.0\System.Memory.Data.dll
  • bin\net10.0\System.Runtime.Caching.dll
  • bin\net10.0\System.Security.Cryptography.Pkcs.dll
  • bin\net10.0\System.Security.Cryptography.ProtectedData.dll
  • bin\net10.0\System.Security.Cryptography.Xml.dll
  • bin\net10.0\System.Security.Permissions.dll
  • bin\net10.0\System.ServiceModel.Duplex.dll
  • bin\net10.0\System.ServiceModel.Http.dll
  • bin\net10.0\System.ServiceModel.Primitives.dll
  • bin\net10.0\System.ServiceModel.Security.dll
  • bin\net10.0\System.ServiceModel.dll
  • bin\net10.0\System.Windows.Extensions.dll
  • bin\net9.0\Azure.Core.dll
  • bin\net9.0\Azure.Identity.Broker.dll
  • bin\net9.0\Azure.Identity.dll
  • bin\net9.0\Isystem.AzAuth.Core.dll
  • bin\net9.0\Isystem.PowerShell.PowerPlatform.Dataverse.dll
  • bin\net9.0\Isystem.PowerShell.PowerPlatform.Dataverse.pdb
  • bin\net9.0\Isystem.Shared.Infrastructure.Core.dll
  • bin\net9.0\Isystem.Shared.Infrastructure.PowerPlatform.Dataverse.dll
  • bin\net9.0\Microsoft.Bcl.AsyncInterfaces.dll
  • bin\net9.0\Microsoft.Crm.Sdk.Proxy.dll
  • bin\net9.0\Microsoft.Extensions.Caching.Abstractions.dll
  • bin\net9.0\Microsoft.Extensions.Caching.Memory.dll
  • bin\net9.0\Microsoft.Extensions.Configuration.Abstractions.dll
  • bin\net9.0\Microsoft.Extensions.Configuration.Binder.dll
  • bin\net9.0\Microsoft.Extensions.Configuration.dll
  • bin\net9.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll
  • bin\net9.0\Microsoft.Extensions.DependencyInjection.dll
  • bin\net9.0\Microsoft.Extensions.Diagnostics.Abstractions.dll
  • bin\net9.0\Microsoft.Extensions.FileProviders.Abstractions.dll
  • bin\net9.0\Microsoft.Extensions.Hosting.Abstractions.dll
  • bin\net9.0\Microsoft.Extensions.Http.dll
  • bin\net9.0\Microsoft.Extensions.Logging.Abstractions.dll
  • bin\net9.0\Microsoft.Extensions.Logging.dll
  • bin\net9.0\Microsoft.Extensions.ObjectPool.dll
  • bin\net9.0\Microsoft.Extensions.Options.dll
  • bin\net9.0\Microsoft.Extensions.Primitives.dll
  • bin\net9.0\Microsoft.Identity.Client.Broker.dll
  • bin\net9.0\Microsoft.Identity.Client.Extensions.Msal.dll
  • bin\net9.0\Microsoft.Identity.Client.NativeInterop.dll
  • bin\net9.0\Microsoft.Identity.Client.dll
  • bin\net9.0\Microsoft.IdentityModel.Abstractions.dll
  • bin\net9.0\Microsoft.IdentityModel.JsonWebTokens.dll
  • bin\net9.0\Microsoft.IdentityModel.Logging.dll
  • bin\net9.0\Microsoft.IdentityModel.Tokens.dll
  • bin\net9.0\Microsoft.PowerPlatform.Dataverse.Client.dll
  • bin\net9.0\Microsoft.VisualStudio.Threading.dll
  • bin\net9.0\Microsoft.VisualStudio.Validation.dll
  • bin\net9.0\Microsoft.Xrm.Sdk.dll
  • bin\net9.0\Newtonsoft.Json.dll
  • bin\net9.0\System.ClientModel.dll
  • bin\net9.0\System.Configuration.ConfigurationManager.dll
  • bin\net9.0\System.Diagnostics.DiagnosticSource.dll
  • bin\net9.0\System.Diagnostics.EventLog.dll
  • bin\net9.0\System.IO.Pipelines.dll
  • bin\net9.0\System.IdentityModel.Tokens.Jwt.dll
  • bin\net9.0\System.Memory.Data.dll
  • bin\net9.0\System.Runtime.Caching.dll
  • bin\net9.0\System.Security.Cryptography.Pkcs.dll
  • bin\net9.0\System.Security.Cryptography.ProtectedData.dll
  • bin\net9.0\System.Security.Cryptography.Xml.dll
  • bin\net9.0\System.Security.Permissions.dll
  • bin\net9.0\System.ServiceModel.Duplex.dll
  • bin\net9.0\System.ServiceModel.Http.dll
  • bin\net9.0\System.ServiceModel.Primitives.dll
  • bin\net9.0\System.ServiceModel.Security.dll
  • bin\net9.0\System.ServiceModel.dll
  • bin\net9.0\System.Text.Encodings.Web.dll
  • bin\net9.0\System.Text.Json.dll
  • bin\net9.0\System.Windows.Extensions.dll
  • en-US\Isystem.PowerShell.PowerPlatform.Dataverse.dll-Help.xml
  • en-US\about_Isystem.PowerShell.PowerPlatform.Dataverse.help.txt

Version History

Version Downloads Last updated
1.0.0 (current version) 4 9/21/2026