Skip to content

PSDataverse 2.0.0-rc1

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 11 Sep 17:34

PSDataverse 2.0.0-rc1

PSDataverse 2 is a substantial modernization of the high-performance PowerShell
module for Microsoft Dataverse. This release candidate keeps the recognizable
low-level Web API model while adding safer authentication, first-class connections,
bounded concurrency, structured diagnostics, and a broad PowerShell-native command
surface.

This is a public prerelease. Please test important automation in a non-production
environment and report feedback through
GitHub Issues.

Install

PSDataverse 2 requires PowerShell 7.6 or later.

Install-PSResource -Name PSDataverse -Version 2.0.0-rc1 -Prerelease

PowerShellGet users can install it with:

Install-Module -Name PSDataverse -RequiredVersion 2.0.0-rc1 -AllowPrerelease

Review the 0.x migration guide
before upgrading existing automation.

Highlights

Authentication and connections

  • Interactive authentication uses Windows Web Account Manager where available and
    the system browser elsewhere, including passwordless and passkey experiences
    offered by the identity platform.
  • Device code, Integrated Windows Authentication, client secret, certificate,
    supplied access token, token provider, and compatible legacy connection-string
    flows are supported.
  • Connections are first-class objects. Scripts can create, inspect, select, switch,
    refresh, and dispose named connections without relying on undocumented globals.
  • Concurrent requests coalesce token refresh instead of acquiring duplicate tokens.

Performance without hidden semantics

  • A bounded System.Threading.Channels scheduler replaces polling-based task
    coordination and provides backpressure, cancellation, response-order controls,
    and explicit degrees of parallelism.
  • Individual requests, concurrent $batch envelopes, and CreateMultiple,
    UpdateMultiple, and UpsertMultiple remain explicit choices because they have
    different ordering, transaction, and failure semantics.
  • Dataverse x-ms-dop-hint and Retry-After guidance are respected.
  • Ambiguous writes are not silently replayed.
  • Multiple-operation capability checks are cached per connection and avoid sending
    large unsupported workloads.

In the disposable test environment, five concurrent 20-operation batch envelopes
reached a median 165.52 POST operations/second, versus 57.76 for individual requests
at DOP 20. Two concurrent 50-row bulk envelopes reached a median 131.85 PATCH
operations/second, versus 51.12 for individual requests at DOP 20. These measurements
are workload-specific starting points, not universal defaults. See the
benchmark and methodology
and transport-selection guide.

PowerShell-native commands

  • Invoke-DataverseRequest is the preferred low-level command;
    Send-DataverseOperation remains as a compatibility alias.
  • New commands cover connection inspection, WhoAmI testing, row CRUD, table
    metadata and provisioning, actions and functions, CSV/JSON import and export,
    and Dataverse multiple-operation messages.
  • Every exported command ships with generated, schema-validated external help,
    examples, pipeline metadata, and an online Markdown reference.

Actionable failures and safer behavior

  • Batch responses are parsed deterministically, including malformed proxy bodies,
    mixed line endings, duplicate headers, throttling responses, and failed content
    IDs.
  • Multiple-operation failures identify the failed chunk, source row range, retained
    input objects, failed content IDs, and successful sibling chunks without exposing
    row contents in the displayed error message.
  • Cancellation flows through requests, pagination, batches, retry delays, and
    scheduler waits.
  • Successful non-200 responses retain their bodies and content headers.
  • Long-standing defects in change-set removal, row counts, option-set export, and
    connection isolation are corrected.

Runtime and release quality

  • Targets .NET 10 and requires PowerShell 7.6.
  • Supports Windows, Linux, and macOS; Integrated Windows Authentication remains
    available for compatible federated identities, while WAM is recommended for
    managed Entra identities on Windows.
  • Removes the unused Scriban/Humanizer feature and dependencies.
  • Builds twice from clean Release directories and requires matching module-file and
    canonical package hashes.
  • Installs the generated package through an isolated local repository and smoke-tests
    it outside the source tree.
  • Passes .NET tests, packaged Pester tests, static analysis, dependency vulnerability
    auditing, guarded live Dataverse integration tests, and PowerShell 7.6 package
    installation on Windows, Linux, and macOS.

Breaking changes

  • PowerShell 5.1 and PowerShell 7.4 are not supported by the PSDataverse 2 binary.
  • Scripts should retain and pass the connection returned by Connect-Dataverse
    instead of reading undocumented global variables.
  • New scripts should choose an explicit authentication flow.
  • Write replay, output ordering, and concurrency are more explicit to avoid hidden
    correctness risks.
  • The unexported experimental Connect-DataverseNew and unused Scriban-based
    ConvertTo-CustomText implementation were removed.

The complete compatibility table and runnable replacements are in the
migration guide.