Microsoft.PowerPlatform.Dataverse.Client 1.0.26

The ID prefix of this package has been reserved for one of the owners of this package by Prefix Reserved
.NET Core 3.1 .NET Framework 4.6.2
dotnet add package Microsoft.PowerPlatform.Dataverse.Client --version 1.0.26
NuGet\Install-Package Microsoft.PowerPlatform.Dataverse.Client -Version 1.0.26
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Microsoft.PowerPlatform.Dataverse.Client" Version="1.0.26" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Microsoft.PowerPlatform.Dataverse.Client --version 1.0.26
#r "nuget: Microsoft.PowerPlatform.Dataverse.Client, 1.0.26"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install Microsoft.PowerPlatform.Dataverse.Client as a Cake Addin
#addin nuget:?package=Microsoft.PowerPlatform.Dataverse.Client&version=1.0.26

// Install Microsoft.PowerPlatform.Dataverse.Client as a Cake Tool
#tool nuget:?package=Microsoft.PowerPlatform.Dataverse.Client&version=1.0.26

This package contains the .net core Dataverse ServiceClient. Used to connect to Microsoft Dataverse. This Package has been authored by the Microsoft Dataverse SDK team.

Product Versions
.NET net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows net7.0 net7.0-android net7.0-ios net7.0-maccatalyst net7.0-macos net7.0-tvos net7.0-windows
.NET Core netcoreapp3.1
.NET Framework net462 net463 net47 net471 net472 net48
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (55)

Showing the top 5 NuGet packages that depend on Microsoft.PowerPlatform.Dataverse.Client:

Package Downloads
Microsoft.PowerPlatform.Dataverse.Client.Dynamics The ID prefix of this package has been reserved for one of the owners of this package by

This package contains the .net core ServiceClient Dynamics Extensions. Used to connect to Microsoft Dataverse. This Package has been authored by the Microsoft Dataverse SDK team.

Microsoft.Dynamics.Sdk.Messages The ID prefix of this package has been reserved for one of the owners of this package by

This package contains the preview of the .net core Dynamics Messages Assembly. Used to issue commands to Dynamics Applications Installed on Microsoft Dataverse. This Package has been authored by the Microsoft Dataverse SDK team.


Engine which simulates your exact Dynamics 365/CRM instance locally including all of it's logic!


XrmFramework aims at simplifying Microsoft Dynamics 365 and Dataverse plugin, workflows development, deployment and testing

FakeXrmEasy.Abstractions.v9 The ID prefix of this package has been reserved for one of the owners of this package by

FakeXrmEasy is the open source test automation framework for .net core and the Power Platform / Dataverse. This is an abstractions package containing only interfaces. RELEASE NOTES ------------------ ## [3.2.0] ### Changed - Remove PullRequestException and added different types of exceptions depending on the license context ## [3.1.2] ### Changed - Bump Dataverse dependency from 0.6.1 to production ready version 1.0.1 ## [3.1.1] ### Changed - Updated build script to also include the major version in the Title property of the generated .nuspec file - DynamicsValue/fake-xrm-easy#41 ## [3.1.0] ### Added - Added Logger property to IXrmFakedPluginContextProperties - DynamicsValue/fake-xrm-easy#24 ## [3.0.2] ### Changed - Bump Dataverse dependency to 0.6.1 from 0.5.10 to solve DynamicsValue/fake-xrm-easy#20 - Also replaced Microsoft.Dynamics.Sdk.Messages dependency, as it has also been deprecated by MSFT, to Microsoft.PowerPlatform.Dataverse.Client.Dynamics 0.6.1 DynamicsValue/fake-xrm-easy#20 ## [3.0.1-rc1] - Initial release

GitHub repositories (2)

Showing the top 2 popular GitHub repositories that depend on Microsoft.PowerPlatform.Dataverse.Client:

Repository Stars
Sample code for Power Apps, including Dataverse, model-driven apps, canvas apps, Power Apps component framework, portals, and ai-builder.
Code Replica for Microsoft.PowerPlatform.Dataverse.Client and supporting nuget packages.
Version Downloads Last updated
1.0.26 8,967 11/4/2022
1.0.23 16,933 10/10/2022
1.0.9 71,402 7/19/2022
1.0.4 12,238 7/7/2022
1.0.1 49,216 6/13/2022
0.6.6 45,137 4/25/2022
0.6.1 65,593 3/9/2022
0.5.17 66,414 1/7/2022
0.5.10 75,673 10/22/2021
0.5.7 29,671 10/15/2021
0.5.5 12,118 10/5/2021
0.5.4 427 10/4/2021
0.5.2 15,880 9/24/2021
0.4.21 39,764 8/17/2021
0.4.20 14,435 7/30/2021
0.4.19 3,333 7/27/2021
0.4.12 83,840 4/28/2021
0.4.11 8,992 4/13/2021
0.4.6 10,165 3/25/2021
0.4.4 10,281 3/8/2021
0.4.3 17,039 3/5/2021

   This package is intended to work with .net full framework 4.6.2, 4.7.2 and 4.8, .net core 3.1, 5.0 and 6.0
   General Documentation can be found here:
   Connection String Docs can be found here:
   Note: Only AD on FullFramework, OAuth, Certificate, ClientSecret Authentication types are supported at this time.

Fix by Git user matkov accepted for crash during create when an invalid timespan is passed from a configuration file to the ServiceClient Constructor. See for details.
Fix by GIT user 0xced accepted for bug in Integrated user security setting,  Code will now properly honor integrated security when attempting to authenticate. See for details.
Fixed a number of places where Async Calls did not have a .ConfigureAwait specification. Thanks to user 0xced for prompting this fix.
Fixed a misleading warning message "Client ID not supplied, using SDK Sample Client ID for this connection" that would be incorrectly shown when ExternalAuthentication type was used. Fixes, Thanks for your report!
Fixed a possible thread contention issue when managing connection context across multiple concurrent threads in the same client.  Git issue: Thanks for your report !
Fixed a memory leak when caused by a logger not being cleaned up when a the creation of the ServiceClient fails. Git issue:
Fixed issue where calling the IOrganizationService* interfaces after the client has been disposed would throw a NullReferenceException. Taking this action will now throw an ObjectDisposedException
Removed a set of exception catch and rethrows to preserve the full callstack to caller. Thanks to Git user 0xceed for prompting ( and sticking with getting us to ) this fix. See: for details.

Added Async version of ExecuteOrganizationRequest to allow for requests to be made bounded with a custom logging message.
Update Default settings for "UseWebAPI" in preparation for future work.
   Note: for Create or Update operations that make extensive use of related entities you may need to reconfigure UseWebAPI to "true".

Fixed an issue with Custom User Agent headers incorrectly causing a format error when .net core is used. Proper User-Agent format must be used to send requests including the user agent.
Fixed an issue with an Empty OptionSetValue collection causing an ArgumentOutOfRangeException. Empty OptionSetValue collections will now be mapped to Null. Fixes Thanks for your report!
Fixed an issue where EntityReference based operations do not propagate RowVersion when using WebAPI protocol.  Fixes

Fixed an issue with External Authentication and Connection and configuration constructor where external auth was not being respected correctly.
Fixed a bug on clone where Ilogger was not being propagated to the cloned connection correctly
Removed a call to WhoAmI during login flow as process of talking to Dataverse to verify the connection is delt with during get environment information call.
Updated Newtonsoft dependencies to 13.0.1 per

Fixed a "Duplicate Key Error" issue created when manually adding some request parameters to an organization request, while also setting the appropriate property in the client
Fix formatting issue with RequestId and Session Id.
Fix exponential back off issue for WebAPI based calls when retrying based on a throttled connection.
Added implementation for Connection and Configuration constructor.
   - Allows for a instance of the service client to be created and configured without initialization the client.  The client can then be initialized later using the .Connect() method.
   - This constructor accepts 3 parameters
       - connectionOptions (ConnectionOptions) = Options necessary to create the connection.
       - deferConnection (bool) defaulted to false = When set to true, will configure but not create the connection until .Connect() is called.
       - serviceClientConfiguration (ConfigurationOptions) defaulted to null = When populated, pre-configures the connection configuration.
   - If deferred connection is set to true, .Connect() must be called before the client is useable.
Added Connect() method for use with the deferred behavior of the Connection and Configuration Constructor.
Activated support for adding additional headers to request when using the Configuration Constructor.
   Note: Dataverse will only allow specific headers to be used. Use of this capability requires foreknowledge of this capability and agreement with Power Platform Dataverse team.

Accepted fixes requested by Git user 0xced -  thanks for your contrib's!
Fixed Null ref bug for missing redirect URI (if it gets that far)
Fixed Missing ConfigureAwait's on some Async methods in auth chain.
Fixed several issues with Alternate Keys being used for entity references relating to use of Int's OptionSets and DateTime alt Key types.  Git Issues #244 and #231
Fixed issue with suppress duplicate detection header not working correctly via WebAPI path Git Issue #266
Fixed an issue with DateTime's being incorrectly formatted on non english hosts. Git Issue #216
Speculative Fix for Date Only types not correctly interpreting TimeZone Offset when in a UTC + Timezone. Git Issue #143
Added Discovery Filter support for Korea and Norway GEO's

Minor Bump to 0.6.x - *Should* be last bump prior to 1.0.

Added initial support for AD auth for OnPremise.  This will work for full framework only.
Added new constructor that will accept a ConnectionOptions class and a ConfigurationOptions Options Object.  This constructor is currently not fully implemented.
   This is prep work for a builder process and intended to unify the connection flow to a single constructor at some point in the future.
   The goal of this work will be to resolve the issues caused by lazy loading hosts.
Fixed a bug in Logger when working with Connection Strings where log events would not be correctly generated.
Speculative fix for GIT issue #219 and #220
Fixed a bug where LastError was not properly reset, fixed Git #229
Fixed Error message issue between onPrem and onLine , Fixed Git #232
Added configuration support to allow for better memory management of very large return sets,  Git #207
   New AppSetting is called "MaxBufferPoolSizeOveride" - there is currently not a way to set this via code at runtime.
   Support for configuration of this will be added as part of the new Constructor for .net core, .net framework can use it by setting the appsetting value now.
Fixed exceptions not being thrown from several paths during login flows.

.net 3.0 Target Removed from Nuget packages.
REFACTORED helpers and utilities for the DataverseServiceClient into the Microsoft.PowerPlatform.Dataverse.Client.Extensions Namespace of the DataverseClient.
Dependency changes:
   Removed Microsoft.Dynamics.Messages.Sdk.nuspec for Dynamics messages at this time.  This will return in the future in some form.
   Removed Microsoft.Cds.Sdk.Proxy.dll from Package and replaced with Microsoft.Crm.Sdk.Proxy.dll in package.
   System.Text.Json moved to 6.0.2 min dependency.
       -- Note: As of this writing, when using Azure functions you cannot use Microsoft.Net.Sdk.Functions.3.0.12 or .3.0.13 due to blocks on System.Text.Json dependencies.  You need to either use .3.0.11 or move up to 4.x
   System.ServiceModel.Http moved to 4.9.0 due to internal dependencies on Microsoft.Xrm.Sdk

Accepted fix requested here:
 fixing delete by alternate key request in client.
Fixed dependency issue for System.Security.Permissions  (git #203)  
Refactored AuthorityResolver to discover AAD authentication authorities to allow for direct access by other clients.

Added new property "RecommendedDegreesOfParallelism".
   This property will report the recommended number of threads for communicating with Dataverse.

Changed internal dependencies to better align with Dataverse Server.
Fixed an issue with updating ManyToOneRelationship based attributes.
Fixed an issue with activity parties relationships.

Removed Sealed attribute from the Service Client Class.
Fixed an issue with null values being sent to the API causing a null exception to be raised.
Fixed missing nuget dependency for Microsoft.Identity.Client.Extensions.Msal, Nuget now properly includes that package.

Fixed a nuget dependency issue for Microsoft.Extensions.Caching.Memory
   Microsoft.Extensions.Caching.Memory, min version 3.1.8

Fixed and issue with the client being non-castable to IOrganizationServiceAsync, Client will now cast again. (Internal Report)
   Special note:
       IOrganizationServiceAsync has async methods without cancellation support. this is required for service mapping as the dataverse server does not natively support this feature.
       IOrganizationServiceAsync2 has async methods WITH cancellation support.  
       This surfaces in the client as 2 forms of each async method and is currently necessary to support internal auto generation of contracts for service communication. We will work to improve this in the future.
       Cancellation events will currently raise an OperationCancelled Exception, this can either be the topmost exception, or embedded in a DataverseException.
       Cancellation methods are 'preferred' if you need to support cancellation in your application.
Fixed an issue with External authentication type not being properly passed though to cloned clients.  (git #162)

***** Breaking Changes *****
Removed the constructor:
   public ServiceClient(OrganizationWebProxyClient externalOrgWebProxyClient, ILogger logger = null)
       Removed as we are refactoring how we will accept an external created client for internal use cases.
Contract change:
   Added Support to set token file storage location back to connection string and constructors supporting User Authentication.
   Modified DiscoverOrganizationsAsync to return a new return object called DiscoverOrganizationsResult
   Modified Exception type thrown when external authentication fail to return DataverseOperationExecption vs general exception.

Accepted suggestion to Updated logic to detect SDK runtime version for client.  Thanks to GitHub user 0xced
Updated behavior of Token refresh to reduce cache hits, Optimized token lookup for cache hits over network calls.
Added Handlers to support timeouts from AAD Token service. (GIT #148)
Added InMemory Token Cache system for S2S flows. (GIT #144)
   This pulls a new dependency on Microsoft.Extensions.Caching.Memory, min version 5.0.0
Added FileToken Storage Provider back into Client - works for User Access flows only... Does not work for S2S accounts.
Added configuration override support for setting MSAL Token Acquire Timeout, Retry Count, and MSALPIILogger
   MSAL Token Timeout control : appsetting = MSALRequestTimeoutOverride,  default is 30 seconds.
   MSAL Token Acquire retry count: appsetting = MSALRequestRetryCountOverride, default is 3.
   MSAL Allow PII in Log data: appsetting = MSALLogPII, default is false
Updated Async Implementation older SDK flow ( non-OData ) which should improve thread support. (Git #146)
Updated Internal interaction behaviors for communication to Dataverse Server
   Added temp properties to allow for field control of this if the behavior does not work as intended.
Fixed an issue where an Guid.Empty Session ID was set the server.
Fixed an issue where Create and Update Operations would not properly respect API allowed fields for create or update. (Git #163)
Fixed an issue where logical name was being used instead of Schema name for Activity parties (Git #166)

Fixed Connection Creation "Hang" behavior that could occur when trying to create a Dataverse Service Client inside a thread.
Fixed an issue with ILogger not propagating correctly when used with connection string flows.
Fixed an issue when attempting to Null a lookup that would cause a Microsoft.OData.ODataException: Does not support untyped value in non-open type error
Changed the behavior of Update message to be consistent with Organization Service Update behavior instead of an Upsert behavior.
Added compensating code to deal with a null ref issue when logging which could cause a client crash.
Added optional WebAPI support during login and solution import & export operations
Refactored ServiceClient and ConnectionService

Updated behavior of ImportSolutionAsync to leverage updated Dataverse behavior post 9.2 release.
Updated Display name for Northamerica 2 Region to reflect that it is more commonly know as GCC.
Updated Newtonsoft.Json to v11.0.2 to match server.
Fixed an issue with ActivityParty when using an Entity Array vs an EntityCollection for ActivityParties

Fixed an issue raised when updating some entities\attributes values to null.
Fixed and issue with DataTime formatting for Timezone independent, Timezone specific, and 'normal' DateTime types.
Update for Current Dataverse System Messages.

Update for Current Dataverse System Messages.
Fixed an issue where authentication could fail during throttling due to token not being refreshed on retry.
Adding Exception behaviors for all Metadata Operations.
Adding EnableAffinityCookie to allow for override of Affinity behavior when interacting with Dataverse.
   In general, users should not manipulate this property. more details can be found here:
Adding support for enhanced features for solution import.

Exposing ILogger support on all constructors and Static API commands.

Added support for related entity create as part of general "create" operation.
Updated Async Operations to return task's for async methods that were returning void's
Updated DataverseOperationException to include HttpOperationResponse, where it exists.
Fixed issue with Cloned Connections not refreshing their tokens on token expiration
Updated Logger to remove string builder property
Added Initial code for ILogger implementation. (Not exposed as of yet but coming soon)
Corrected an issue when using the Entity myEnt = new Entity(string, guid) not properly setting the primary id.

Supersedes Microsoft.PowerPlatform.Cds.Client,  Previous nuget has been retired.
***** MAJOR Breaking Changes *****
Complete renaming of CdsServiceClient for Dataverse naming.
Major differences:
   Namespace: Microsoft.PowerPlatform.Cds.Client =>  Microsoft.PowerPlatform.Dataverse.Client
   CdsServiceClient is now ServiceClient
   All methods in CdsServiceClient that had Cds in the name have been updated to remove cds Name
   Exception's have been updated to
       CdsConnectionException => DataverseConnectionException
       CdsOperationException => DataverseOperationException

Initial async implementation of SDK Client. - note this is a WORK IN PROGRESS and may not work as expected under all circumstances.
   Please report bugs or behaviors issues in the normal way
Fixes and issue with exceptions being thrown by code that is supposed to log exceptions.
Corrected issue with DateOnly data types when using CUD events.
Included additions to logging when failures occur during connection string based login. - credit to GIT:@nicknow for the suggestion of fix.

Fixed an issue where Activity Party types were not being properly processed
Fixed an issue where the incorrect format was used for Data only types.
Fixed an issue where BypassPluginExecution property on request was not being understood properly by the server.

***** Breaking Changes *****

MSAL Port completed.
   Auth processes have been ported to MSAL.
   UserID/PW flows are now enabled on .net core for login where possible ( per AAD security rules and host OS)
   Auth flow Logging capture is still under development.

Authentication constructors are now updated to remove some patterns
Removed Token Cache path from constructors and ignore on connection string at this time
   Token Cache handle support will be revisited, however if you have a pressing need, we recommend you use the external token management constructor in the mean time and self manage that.
   For now, only MSAL In-Memory support will be provided for token cache
Refactored to support Shared HTTPClientFactory for WebAPI connections to cut down on some noise for folks that are doing repeated logins.
Refactored code a bit to help with clarity on various functional areas.
Renamed/Refactored Discovery methods to as Async methods.

Rerouted all Upsert Request to use OrganizationService API.
Added new InMemory Logging Options to support returning Logs captured either as Array of Tuples or a string list.
Added new public property for OrganizationDetail Information called "OrganizationDetail" for the currently connected environment.
Added new enum for ImportSolution additional property options called "ImportSolutionProperties" - this contains valid options for additional properties for the ImportSolution handler
Fixed an issue with telemetry for the client that was using incorrect format for useragent content
Updated Core CDS Sdk assemblies

Fixed an issue with .Clone not correctly supporting adding telemetry handlers to cloned connections

Adding Switzerland Geo to Regions List.
Added support for Alternate key use on entity references as part of Create Update Delete Operations running over the webAPI.
Added concurrency support to Create Update Delete Operations running over the webAPI.

Renamed Exception CdsConnectionException to CdsClientConnectionException.  No other change to the Exception
Improved handling of cached connection retrieval failures from memory when an invalid object is returned.
Fixed a bug where a WebAPI navigation property did not match with its metadata descriptor.
Fixed Retry delay issue when making calls to the CDS WebAPI – thanks to GIT user stvonolf for the catch of this issue.
Added new Exception, CdsClientOperationException - this will be used when an exception is raised via the CDSClient when CDSClient is using WebAPI.
Added IntelliSense Doc Support
Added support for bypassing custom Plug-in Execution during SDK Operation.
   This is a special use capability that requires a specialized permission in the CDS infrastructure to use.
   Currently this is only permitted for use by users that have the System Administrator Security Role.

Fixed issue when CUD via WebAPI when entity contains a entity reference that is a polymorphic reference. ( IE customer data type )

Corrected a bug in Org request to WebAPI operation when attempting to set fields to null values.
Added initial support for in memory log capture support.

Update to internal support libraries

Fixed an issue with sovereign cloud discovery reference data that would prevent a future login control from picking the correct global discovery server.

Fixed missing ConfigureAwait on ADAL Authority acquire flow.
Added some additional logging to understand what version of ADAL is being used.
Fixed an issue with translation of Money types to WebAPI requests.

Fixed Authority property data loss post clone process
Added temp logic to run upsert requests that have anything other than string keys via the Native OrgAPI vs webAPI, this is a workaround for an open issue with the webAPI where it does not support none string key's on upsert(patch) requests that result in a create operation.
Rerouted CdsServiceClient Helpers to use WebAPI path for CUD requests.

Several updates to Create / Update / Delete operations to move the underlying features over to use the WebAPI.
Please report any bugs that you run into with this.  This has been "mostly" tested with our current test suite, however we have not full tested all data type translation at this point.

Altering Nuget Version to 3 digit semantic version
Namespace change from Microsoft.Powerplatform.xxxx to Microsoft.PowerPlatform.xxxx
Fixed an error with setting CallerId when ClientSecret Auth type is used.
   Thanks for all the bug reports on this and repro's that really helped us run it down.
Fixed a number of discovery related issue that were broken during the port.
Added new forms of DiscoveryGlobalOrganziations to allow for a token function to be passed to enabled this for use in WebSites and functions where it makes sense.
Updated several sovereign GEO's configs to reflect use of Global discovery for those GEOs
Fixed a bug in LinQ create methods that would appear on non-windows deployments.
   This would manifest as a missing method exception when trying to create a sequential guid.
Fixes a bug in using ExecuteCdsWebRequest that blocked connections using clientSecretAuth types.
Removed IOverrideAuthHookWrapper and property and replaced with a new constructor form.
   This capability was replaced with a new constructor that accepts a function pointer as a parameter to the constructor.
   This user provided function takes the form of string FunctionName (string InstanceUri),  When called, the current instance URI will be
   passed in and the function is expected to return an access token for access to that instance.
   This form allows an given instance of the CdsServiceClient to be associated with a Auth Processor vs having the auth processor at the process level.

Fixed a bug reported in .clone in .net core builds.  When cloning a connection in .net core, the system would think you were using an invalid auth type.

Known issues:
   None at this time.. Please report any issues on the GitHub Issues site.
   Fixed a Nuget Package dependency issue in Microsoft.Dynamics.Sdk.Messages
Intial Alpha release of Microsoft.Cds.Client.CdsServiceClient
   WARNING: This is an ALPHA release.
   This library is a rename and renamespace of the Microsoft.Xrm.Tooling.Connector.CrmSeriviceClient.
   If you are familiar with the CrmServiceClient,  By Renaming each occurrence of Crm to Cds, you should find that API's match up.
   Major changes from CrmServiceClient:
       This library does not support User Interactive or User Password Auth flows in .net core.
       This library does not support AD or ADFS login to OnPremise,
           to use against an onPrem instance of CDS, your instance must be configured with
           ADFS + OAuth and the application ID you wish to use registered.
       This library removes several Dynamics specific helper methods from CrmServiceClient.
           this additional methods can be found by include the nuget package Microsoft.Cds.Client.Dynamics