From 0b7d1f1334772b8d47856b946d0ed9b455369cb8 Mon Sep 17 00:00:00 2001 From: Release-Agent <> Date: Tue, 7 Nov 2023 18:05:24 +0000 Subject: [PATCH] '' --- src/Build.Shared.props | 19 +- .../Client/Auth/AuthProcessor.cs | 3 + ...soft.PowerPlatform.Dataverse.Client.csproj | 6 +- .../ServiceClientTests.cs | 10 +- ...crosoft.PowerPlatform.Dataverse.Client.xml | 426 +++++++++--------- ...Platform.Dataverse.Client.ReleaseNotes.txt | 11 + ...soft.PowerPlatform.Dataverse.Client.nuspec | 26 +- 7 files changed, 257 insertions(+), 244 deletions(-) diff --git a/src/Build.Shared.props b/src/Build.Shared.props index 550fb01..b58b0f2 100644 --- a/src/Build.Shared.props +++ b/src/Build.Shared.props @@ -1,20 +1,8 @@ - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - - false - false - false - false - false - false - false - false - false + true @@ -52,11 +40,6 @@ $(OutDir) - - $(RepoRoot)\build\crmkey\35MSSharedLib1024.snk - true - - AnyCPU 512 diff --git a/src/GeneralTools/DataverseClient/Client/Auth/AuthProcessor.cs b/src/GeneralTools/DataverseClient/Client/Auth/AuthProcessor.cs index 6677fdc..499aec6 100644 --- a/src/GeneralTools/DataverseClient/Client/Auth/AuthProcessor.cs +++ b/src/GeneralTools/DataverseClient/Client/Auth/AuthProcessor.cs @@ -6,6 +6,7 @@ using System; using System.Collections.Generic; using System.Diagnostics; +using System.Globalization; using System.Linq; using System.Net.Http; using System.Security; @@ -299,7 +300,9 @@ internal async static Task ObtainAccessTokenAsync( } else { +#pragma warning disable CS0618 // Type or member is obsolete _authenticationResult = await publicAppClient.AcquireTokenByUsernamePassword(scopes, clientCredentials.UserName.UserName, ServiceClient.MakeSecureString(clientCredentials.UserName.Password)).ExecuteAsync().ConfigureAwait(false); +#pragma warning restore CS0618 // Type or member is obsolete } } else diff --git a/src/GeneralTools/DataverseClient/Client/Microsoft.PowerPlatform.Dataverse.Client.csproj b/src/GeneralTools/DataverseClient/Client/Microsoft.PowerPlatform.Dataverse.Client.csproj index a6bdd10..c27794c 100644 --- a/src/GeneralTools/DataverseClient/Client/Microsoft.PowerPlatform.Dataverse.Client.csproj +++ b/src/GeneralTools/DataverseClient/Client/Microsoft.PowerPlatform.Dataverse.Client.csproj @@ -40,12 +40,10 @@ - - + + - - diff --git a/src/GeneralTools/DataverseClient/UnitTests/CdsClient_Core_Tests/ServiceClientTests.cs b/src/GeneralTools/DataverseClient/UnitTests/CdsClient_Core_Tests/ServiceClientTests.cs index da7f8d5..1c2caf9 100644 --- a/src/GeneralTools/DataverseClient/UnitTests/CdsClient_Core_Tests/ServiceClientTests.cs +++ b/src/GeneralTools/DataverseClient/UnitTests/CdsClient_Core_Tests/ServiceClientTests.cs @@ -853,7 +853,7 @@ public void ConnectUsingServiceIdentity_ClientSecret_ConStr() Assert.Null(ex); } // Check user before we validate connection - client._connectionSvc.AuthenticationTypeInUse.Should().BeEquivalentTo(Microsoft.PowerPlatform.Dataverse.Client.AuthenticationType.ClientSecret); + client._connectionSvc.AuthenticationTypeInUse.Should().Be(Microsoft.PowerPlatform.Dataverse.Client.AuthenticationType.ClientSecret); client._connectionSvc.AuthContext.Scopes.Should().BeEquivalentTo(new string[] { $"{Conn_Url}/.default" }); client._connectionSvc.AuthContext.Account.Should().BeNull(); client._connectionSvc.AuthContext.AccessToken.Should().NotBeNull(); @@ -956,7 +956,7 @@ public void ConnectUsingUserIdentity_UIDPW_ConStr() Assert.True(client.IsReady, "Failed to Create Connection via Connection string"); // Check user before we validate connection - client._connectionSvc.AuthenticationTypeInUse.Should().BeEquivalentTo(Microsoft.PowerPlatform.Dataverse.Client.AuthenticationType.OAuth); + client._connectionSvc.AuthenticationTypeInUse.Should().Be(Microsoft.PowerPlatform.Dataverse.Client.AuthenticationType.OAuth); client._connectionSvc.AuthContext.Scopes.Should().BeEquivalentTo(new string[] { $"{Conn_Url}//user_impersonation" }); client._connectionSvc.AuthContext.Account.Should().NotBeNull(); client._connectionSvc.AuthContext.IdToken.Should().NotBeEmpty(); @@ -999,7 +999,7 @@ public void ConnectUsingUserIdentity_UIDPW_CtorV1_Discovery() Assert.True(client.IsReady, "Failed to Create Connection via Constructor - Discovery"); // Check user before we validate connection - client._connectionSvc.AuthenticationTypeInUse.Should().BeEquivalentTo(Microsoft.PowerPlatform.Dataverse.Client.AuthenticationType.OAuth); + client._connectionSvc.AuthenticationTypeInUse.Should().Be(Microsoft.PowerPlatform.Dataverse.Client.AuthenticationType.OAuth); client._connectionSvc.AuthContext.Account.Should().NotBeNull(); client._connectionSvc.AuthContext.IdToken.Should().NotBeEmpty(); client._connectionSvc.AuthContext.Account.Username.Should().BeEquivalentTo(Conn_UserName); @@ -1029,7 +1029,7 @@ public void ConnectUsingUserIdentity_UIDPW_CtorV2() Assert.True(client.IsReady, "Failed to Create Connection via Constructor - Direct Connect"); // Check user before we validate connection - client._connectionSvc.AuthenticationTypeInUse.Should().BeEquivalentTo(Microsoft.PowerPlatform.Dataverse.Client.AuthenticationType.OAuth); + client._connectionSvc.AuthenticationTypeInUse.Should().Be(Microsoft.PowerPlatform.Dataverse.Client.AuthenticationType.OAuth); client._connectionSvc.AuthContext.Scopes.Should().BeEquivalentTo(new string[] { $"{Conn_Url}//user_impersonation" }); client._connectionSvc.AuthContext.Account.Should().NotBeNull(); client._connectionSvc.AuthContext.IdToken.Should().NotBeEmpty(); @@ -1083,7 +1083,7 @@ public void ConnectUsingUserIdentity_UIDPW_ConSetup() ValidateConnection(client); // Check user before we validate connection - client._connectionSvc.AuthenticationTypeInUse.Should().BeEquivalentTo(Microsoft.PowerPlatform.Dataverse.Client.AuthenticationType.OAuth); + client._connectionSvc.AuthenticationTypeInUse.Should().Be(Microsoft.PowerPlatform.Dataverse.Client.AuthenticationType.OAuth); client._connectionSvc.AuthContext.Scopes.Should().BeEquivalentTo(new string[] { $"{Conn_Url}/user_impersonation" }); client._connectionSvc.AuthContext.Account.Should().NotBeNull(); client._connectionSvc.AuthContext.IdToken.Should().NotBeEmpty(); diff --git a/src/SDK-IntelliSense/V9/PublishedXML/CE/Microsoft.PowerPlatform.Dataverse.Client.xml b/src/SDK-IntelliSense/V9/PublishedXML/CE/Microsoft.PowerPlatform.Dataverse.Client.xml index 696ed2a..723162c 100644 --- a/src/SDK-IntelliSense/V9/PublishedXML/CE/Microsoft.PowerPlatform.Dataverse.Client.xml +++ b/src/SDK-IntelliSense/V9/PublishedXML/CE/Microsoft.PowerPlatform.Dataverse.Client.xml @@ -32,7 +32,7 @@ - True if probing returned a WWW-Authenticate header. + if probing returned a WWW-Authenticate header. @@ -55,9 +55,7 @@ - ORGINAL CODE FROM https://github.com/AzureAD/azure-activedirectory-library-for-dotnet/blob/68d7dea3643e075be85abbca1ab88ba614465541/src/Microsoft.IdentityModel.Clients.ActiveDirectory/Features/NonWinCommon/PromptBehavior.cs - PORTED TO THIS LIB TO ACT AS A BRIDGE BETWEEN ADAL.NET AND MSAL. - Indicates whether AcquireToken should automatically prompt only if necessary or whether + AcquireToken should automatically prompt only if necessary or whether it should prompt regardless of whether there is a cached token. @@ -258,68 +256,34 @@ - - - Extension to the FileLogTraceListner class. - - - - The class constructor. - - - - The class constructor. - Source Path - - - - Format the message with additional information - Message to be logged - Formatted message - - - - Adding MaxFileCount to the suported attribute list - - - - - Checks if the CustomLocation Path has write permission - Custom Location Path - boolean - - - - Trace event is Overriden to check the Log file Access. - TraceEventCache - Source - TraceEventType - Id - message string - - - - Trace event is Overriden to check the Log file Access. - TraceEventCache - Source - TraceEventType - Id - Format Options - Array of message objects - - - - Trace event. Allows overriden behavior in inheriting classes - - - - - - - - - Number of files to keep while rolling. - + + + + + + + + + + + + + + + + + + + + + + + + + + + + Dataverse Service Client extensions for batch operations. @@ -327,10 +291,10 @@ Create a Batch Request for executing batch operations. This returns an ID that will be used to identify a request as a batch request vs a "normal" request. + ServiceClient Name of the Batch Should Results be returned Should the process continue on an error. - ServiceClient @@ -338,7 +302,8 @@ Begins running the Batch command. ServiceClient ID of the batch to run - true if the batch begins, false if not. + + if the batch begins, false if not. @@ -350,16 +315,16 @@ Returns the batch id for a given batch name. - Name of Batch ServiceClient + Name of Batch Returns the organization request at a give position + ServiceClient ID of the batch Position - ServiceClient @@ -386,30 +351,32 @@ Closes the Activity type specified. The Activity Entity type supports fax , letter , and phonecall *Note: This will default to using English names for Status. if you need to use Non-English, you should populate the names for completed for the status and state. + ServiceClient Type of Activity you would like to close.. Supports fax, letter, phonecall ID of the Activity you want to close State Code configured on the activity Status code on the activity Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. - ServiceClient - true if success false if not. + + if success false if not. This creates a annotation [note] entry, related to a an existing entity Required Properties in the fieldListnotetext (string) = Text of the note,subject (string) = this is the title of the note + ServiceClient Target Entity TypeID Target Entity ID Fields to populate Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. - ServiceClient Associates one Entity to another where an M2M Relationship Exists. + ServiceClient Entity on one side of the relationship The Id of the record on the first side of the relationship Entity on the second side of the relationship @@ -417,63 +384,63 @@ Relationship name between the 2 entities Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. - ServiceClient true on success, false on fail Associates multiple entities of the same time to a single entity + ServiceClient Entity that things will be related too. ID of entity that things will be related too Entity that you are relating from ID's of the entities you are relating from Name of the relationship between the target and the source entities. Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately - Optional: if set to true, indicates that this is a N:N using a reflexive relationship Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. - ServiceClient + Optional: if set to true, indicates that this is a N:N using a reflexive relationship true on success, false on fail Creates a new activity against the target entity type + ServiceClient Type of Activity you would like to create Entity type of the Entity you want to associate with. + ID of the Entity to associate the Activity too Subject Line of the Activity Description Text of the Activity - ID of the Entity to associate the Activity too User ID that Created the Activity *Calling user must have necessary permissions to assign to another user Additional fields to add as part of the activity creation Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. - ServiceClient Guid of Activity ID or Guid.empty Uses the dynamic entity patter to create a new entity + ServiceClient Name of Entity To create Initial Values Optional: Applies the update with a solution by Unique name Optional: if true, enabled Dataverse onboard duplicate detection Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. - ServiceClient Guid on Success, Guid.Empty on fail Deletes an entity from the Dataverse + ServiceClient entity type name entity id Optional : Batch ID to attach this request too. Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. - ServiceClient true on success, false on failure Removes the Association between 2 entity items where an M2M Relationship Exists. + ServiceClient Entity on one side of the relationship The Id of the record on the first side of the relationship Entity on the second side of the relationship @@ -481,12 +448,12 @@ Relationship name between the 2 entities Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. - ServiceClient true on success, false on fail Generic update entity + ServiceClient String version of the entity name Key fieldname of the entity Guid ID of the entity to update @@ -495,31 +462,30 @@ Optional: if true, enabled Dataverse onboard duplicate detection Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. - ServiceClient true on success, false on fail Updates the State and Status of the Entity passed in. + ServiceClient Name of the entity Guid ID of the entity you are updating Int version of the new state Int Version of the new status Optional : Batch ID to attach this request too. Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. - ServiceClient true on success. Updates the State and Status of the Entity passed in. + ServiceClient Name of the entity Guid ID of the entity you are updating String version of the new state String Version of the new status Optional : Batch ID to attach this request too. Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. - ServiceClient true on success. @@ -562,53 +528,79 @@ Executes a Delete and Propmote Request against Dataverse using the Async Pattern. - Unique Name of solution to be upgraded ServiceClient + Unique Name of solution to be upgraded Returns the Async Job ID. To find the status of the job, query the AsyncOperation Entity using GetEntityDataByID using the returned value of this method + + + + Used to upload a data map to the Dataverse + ServiceClient XML of the datamap in string form True to have Dataverse replace ID's on inbound data, False to have inbound data retain its ID's if true, dataMapXml is expected to be a File name and path to load. - ServiceClient Returns ID of the datamap or Guid.Empty + + + + + + + + + + + Imports a Dataverse solution to the Dataverse Server currently connected. Note: this is a blocking call and will take time to Import to Dataverse + ServiceClient Path to the Solution File - Activate Plugin's and workflows on the Solution This will populate with the Import ID even if the request failed. You can use this ID to request status on the import via a request to the ImportJob entity. + Activate Plugin's and workflows on the Solution Forces an overwrite of unmanaged customizations of the managed solution you are installing, defaults to false Skips dependency against dependencies flagged as product update, defaults to false Applies only on Dataverse organizations version 7.2 or higher. This imports the Dataverse solution as a holding solution utilizing the “As Holding” capability of ImportSolution Internal Microsoft use only - ServiceClient Extra parameters + + + + + + + + + + + Import Solution Async used Execute Async pattern to run a solution import. + ServiceClient Path to the Solution File - Activate Plugin's and workflows on the Solution This will populate with the Import ID even if the request failed. You can use this ID to request status on the import via a request to the ImportJob entity. + Activate Plugin's and workflows on the Solution Forces an overwrite of unmanaged customizations of the managed solution you are installing, defaults to false Skips dependency against dependencies flagged as product update, defaults to false Applies only on Dataverse organizations version 7.2 or higher. This imports the Dataverse solution as a holding solution utilizing the “As Holding” capability of ImportSolution Internal Microsoft use only Extra parameters - ServiceClient Returns the Async Job ID. To find the status of the job, query the AsyncOperation Entity using GetEntityDataByID using the returned value of this method @@ -624,15 +616,26 @@ Determines if the Dataverse sample data has been installed ServiceClient - True if the sample data is installed, False if not. + + if the sample data is installed, False if not. + + + + + + + + + + Starts an Import request for CDS. Supports a single file per Import request. - Delays the import jobs till specified time - Use DateTime.MinValue to Run immediately - Import Data Request ServiceClient + Import Data Request + Delays the import jobs till specified time - Use DateTime.MinValue to Run immediately Guid of the Import Request, or Guid.Empty. If Guid.Empty then request failed. @@ -679,7 +682,7 @@ - Set true if the Record Owner is a Team + Set if the Record Owner is a Team @@ -829,6 +832,7 @@ This will route a Entity to a public queue, + ServiceClient ID of the Entity to route Name of the Entity that the Id describes Name of the Queue to Route Too @@ -836,28 +840,27 @@ if true Set the worked by when doing the assign Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. - ServiceClient true on success Assign an Entity to the specified user ID + ServiceClient User ID to assign too Target entity Name Target entity id Batch ID of to use, Optional Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. - ServiceClient Executes a named workflow on an object. + ServiceClient name of the workflow to run ID to exec against Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. - ServiceClient Async Op ID of the WF or Guid.Empty @@ -869,11 +872,11 @@ this will send an Email to the + ServiceClient ID of the Email activity Tracking Token or Null Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. - ServiceClient @@ -911,104 +914,104 @@ Adds an option to a pick list on an entity. + ServiceClient Entity Name to Target Attribute Name on the Entity List of Localized Labels integer Value Publishes the Update to the Live system.. note this is a time consuming process.. if you are doing a batch up updates, call PublishEntity Separately when you are finished. - ServiceClient true on success, on fail check last error. Returns all attributes on a entity - returns all attributes on a entity ServiceClient + returns all attributes on a entity Returns a list of entities with basic data from Dataverse + ServiceClient defaults to true, will only return published information EntityFilter to apply to this request, note that filters other then Default will consume more time. - ServiceClient Gets metadata for a specific entity's attribute. + ServiceClient Name of the entity Attribute Name - ServiceClient Gets an Entity Name by Logical name or Type code. + ServiceClient logical name of the entity Type code for the entity - ServiceClient Localized name for the entity in the current users language Gets an Entity Name by Logical name or Type code. + ServiceClient logical name of the entity Type code for the entity - ServiceClient Localized plural name for the entity in the current users language Returns the Form Entity References for a given form type. + ServiceClient logical name of the entity you are querying for form data. Form Type you want - ServiceClient List of Entity References for the form type requested. Returns the Metadata for an entity from Dataverse, defaults to basic data only. + ServiceClient Logical name of the entity filter to apply to the query, defaults to default entity data. - ServiceClient Returns the Entity name for the given Type code - ServiceClient + Gets the typecode of an entity by name. - name of the entity to get the type code on ServiceClient + name of the entity to get the type code on Gets a global option set from Dataverse. - Name of the Option Set To get ServiceClient + Name of the Option Set To get OptionSetMetadata or null Gets a PickList, Status List or StateList from the metadata of an attribute + ServiceClient text name of the entity to query name of the attribute to query - ServiceClient Publishes an entity to the production system, used in conjunction with the Metadata services. - Name of the entity to publish ServiceClient + Name of the entity to publish True on success @@ -1078,6 +1081,7 @@ Returns all Activities Related to a given Entity ID. Only Account, Contact and Opportunity entities are supported. + ServiceClient Type of Entity to search against ID of the entity to search against. List of Field to return for the entity , null indicates all fields. @@ -1090,13 +1094,13 @@ outbound place holder cookie is there more records or not Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately - ServiceClient Array of Activities Returns all Activities Related to a given Entity ID. Only Account, Contact and Opportunity entities are supported. + ServiceClient Type of Entity to search against ID of the entity to search against. List of Field to return for the entity , null indicates all fields. @@ -1109,79 +1113,79 @@ outbound place holder cookie is there more records or not Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately - ServiceClient Array of Activities This function gets data from a Dictionary object, where "string" identifies the field name, and Object contains the data, this method then attempts to cast the result to the Type requested, if it cannot be cast an empty object is returned. + ServiceClient Results from the query key name you want - ServiceClient Type if object to return object Searches for data based on a FetchXML query + ServiceClient Fetch XML query data. Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. - ServiceClient results or null Searches for data based on a FetchXML query + ServiceClient Fetch XML query data. Number records per Page Current Page number inbound place holder cookie outbound place holder cookie is there more records or not - Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately - ServiceClient + Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. results or null Searches for data based on a FetchXML query + ServiceClient Fetch XML query data. Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. - ServiceClient results as an entity collection or null Searches for data based on a FetchXML query + ServiceClient Fetch XML query data. Number records per Page Current Page number inbound place holder cookie outbound place holder cookie + is there more records or not Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. - is there more records or not - ServiceClient results as an Entity Collection or null Gets a List of variables from the account based on the list of field specified in the Fields List + ServiceClient The entity to be searched. ID of Entity to query + Populated Array of Key value pairs with the Results of the Search Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. - Populated Array of Key value pairs with the Results of the Search - ServiceClient Queries an Object via a M to M Link + ServiceClient Name of the entity you want return data from Search Prams for the Return Entity Name of the entity you are linking too @@ -1190,15 +1194,15 @@ Dataverse Name of the Relationship Key field on the Entity you want to return data from Search Operator to apply + List of Fields from the Returned Entity you want Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. - List of Fields from the Returned Entity you want - ServiceClient Queries an Object via a M to M Link + ServiceClient Name of the entity you want return data from Search Prams for the Return Entity Name of the entity you are linking too @@ -1207,36 +1211,36 @@ Dataverse Name of the Relationship Key field on the Entity you want to return data from Search Operator to apply - Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately List of Fields from the Returned Entity you want - Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. + Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately If the relationship is defined as Entity:Entity or Account N:N Account, this parameter should be set to true - ServiceClient + Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. Returns all Activities Related to a given Entity ID. Only Account, Contact and Opportunity entities are supported. + ServiceClient Type of Entity to search against ID of the entity to search against. + Entity to Rollup from List of Field to return for the entity , null indicates all fields. Filters responses based on search prams. Sort Order Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately - Entity to Rollup from - ServiceClient Array of Activities Returns all Activities Related to a given Entity ID. Only Account, Contact and Opportunity entities are supported. + ServiceClient Type of Entity to search against ID of the entity to search against. - List of Field to return for the entity , null indicates all fields. Entity to Rollup from + List of Field to return for the entity , null indicates all fields. Search Operator to user Dataverse Filter list to apply Sort by @@ -1247,49 +1251,48 @@ is there more records or not Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. - ServiceClient Gets a list of accounts based on the search parameters. + ServiceClient Dataverse Entity Type Name to search Array of Search Parameters - List of fields to retrieve, Null indicates all Fields Logical Search Operator - Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. + List of fields to retrieve, Null indicates all Fields Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately - ServiceClient + Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. List of matching Entity Types. Searches for data from an entity based on the search parameters. + ServiceClient Name of the entity to search Array of Search Parameters - List of fields to retrieve, Null indicates all Fields Logical Search Operator + List of fields to retrieve, Null indicates all Fields + Sort order Number records per Page Current Page number inbound place holder cookie outbound place holder cookie is there more records or not - Sort order Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. - ServiceClient List of matching Entity Types. Gets a list of accounts based on the search parameters. + ServiceClient Dataverse Entity Type Name to search Array of Search Parameters - List of fields to retrieve, Null indicates all Fields Logical Search Operator + List of fields to retrieve, Null indicates all Fields Optional: if set to a valid GUID, generated by the Create Batch Request Method, will assigned the request to the batch for later execution, on fail, runs the request immediately Adds the bypass plugin behavior to this request. Note: this will only apply if the caller has the prvBypassPlugins permission to bypass plugins. If its attempted without the permission the request will fault. - ServiceClient List of matching Entity Types. @@ -1324,14 +1327,14 @@ Internal use only + - Interface containing extension methods provided by the DataverseServiceClient for the IOrganizationService Interface. - These extensions will only operate from within the client and are not supported server side. + Interface containing asynchronous extension methods implemented by the Dataverse ServiceClient class according to the IOrganizationService interface. - Associate an entity with a set of entities + Associate an entity with a set of entities. @@ -1339,19 +1342,19 @@ - Create an entity and process any related entities + Create an entity and process any related entities. entity to create - The ID of the created record + The ID of the created record. - Delete instance of an entity + Delete an instance of an entity. Logical name of entity Id of entity - Disassociate an entity with a set of entities + Disassociate an entity with a set of entities. @@ -1361,35 +1364,34 @@ Perform an action in an organization specified by the request. Refer to SDK documentation for list of messages that can be used. - Results from processing the request + Results from processing the request. - Retrieves instance of an entity - Logical name of entity - Id of entity - Column Set collection to return with the request - Selected Entity + Retrieves an instance of an entity. + Logical name of entity. + Id of entity. + Column Set collection to return with the request. + The specified entity. - Retrieves a collection of entities + Retrieves a collection of entities. - Returns an EntityCollection Object containing the results of the query + A collection containing the results of the query. - Updates an entity and process any related entities - entity to update + Updates an entity and process any related entities. + The entity to update. - Interface containing extension methods provided by the DataverseServiceClient for the IOrganizationService Interface. - These extensions will only operate from within the client and are not supported server side. + Interface containing asynchronous extension methods implemented by the Dataverse ServiceClient class according to the IOrganizationService interface. - Associate an entity with a set of entities + Associate an entity with a set of entities. @@ -1398,28 +1400,28 @@ - Create an entity and process any related entities - entity to create + Create an entity and process any related entities. + The entity to create. Propagates notification that operations should be canceled. - Returns the newly created record + The newly created entity record. - Create an entity and process any related entities - entity to create + Create an entity and process any related entities. + The entity to create. Propagates notification that operations should be canceled. - The ID of the created record + The ID of the created record. - Delete instance of an entity - Logical name of entity - Id of entity + Delete instance of an entity. + Logical name of the entity. + Id of the entity. Propagates notification that operations should be canceled. - Disassociate an entity with a set of entities + Disassociate an entity with a set of entities. @@ -1429,30 +1431,30 @@ Perform an action in an organization specified by the request. - Refer to SDK documentation for list of messages that can be used. + Refer to the SDK documentation for list of messages that can be used. Propagates notification that operations should be canceled. Results from processing the request - Retrieves instance of an entity - Logical name of entity - Id of entity - Column Set collection to return with the request + Retrieves instance of an entity. + Logical name of entity. + Id of entity. + ColumnSet collection to return with the request. Propagates notification that operations should be canceled. - Selected Entity + The specified entity. - Retrieves a collection of entities + Retrieves a collection of entities. Propagates notification that operations should be canceled. - Returns an EntityCollection Object containing the results of the query + A collection containing the results of the query. - Updates an entity and process any related entities - entity to update + Updates an entity and process any related entities. + The entity to update. Propagates notification that operations should be canceled. @@ -1764,9 +1766,9 @@ Default constructor + String name of the batch, if blank, a GUID is used True to return responses, False to not return responses True to continue if anyone item trips an error, False to stop on the first error. - String name of the batch, if blank, a GUID is used @@ -1917,12 +1919,12 @@ Will attempt to connect directly to the URL provided for the API endpoint. User Id supplied Password for login + API or Instance URI to access the Dataverse environment. if set, will force the system to create a unique connection The registered client Id on Azure portal. The redirect URI application will be redirected post OAuth authentication. The prompt Behavior. (optional) If true attempts login using current user ( Online ) - API or Instance URI to access the Dataverse environment. (Optional)The token cache path where token cache file is placed. if string.empty, will use default cache file store, if null, will use in memory cache Logging provider @@ -2078,12 +2080,19 @@ Discovers Organizations Using the global discovery service and an external source for access tokens - Global discovery base URI to use to connect too, if null will utilize the commercial Global Discovery Server. Function that will provide access token to the discovery call. + Global discovery base URI to use to connect too, if null will utilize the commercial Global Discovery Server. (optional) path to log store Logging provider + + + + + + + Discovers Organizations Using the global discovery service. @@ -2091,13 +2100,13 @@ You can also provide the discovery instance you wish to use, or not pass it. If you do not specify a discovery region, the commercial global region is used User ID to login with Password to use to login with - (Optional) URI of the discovery server The client Id. The redirect uri. - The prompt behavior. The deployment type: OnPrem or Online. The authority provider for OAuth tokens. Unique if any already known. + The prompt behavior. (Optional) if specified, tries to use the current user + (Optional) URI of the discovery server (optional) path to log store Logging provider A collection of organizations @@ -2109,9 +2118,9 @@ The client credentials. The client Id. The redirect uri. - The prompt behavior. The deployment type: OnPrem or Online. The authority provider for OAuth tokens. Unique if any already known. + The prompt behavior. (Optional) if specified, tries to use the current user (optional) path to log store Logging provider @@ -2124,8 +2133,8 @@ The client credentials. The client Id. The redirect uri. - The prompt behavior. The authority provider for OAuth tokens. Unique if any already known. + The prompt behavior. (Optional) if specified, tries to use the current user (optional) path to log store Logging provider @@ -2173,21 +2182,22 @@ - Executes a web request against Xrm WebAPI. - Here you would pass the path and query parameters that you wish to pass onto the WebAPI. - The format used here is as follows: - {APIURI}/api/data/v{instance version}/querystring. - For example, - if you wanted to get data back from an account, you would pass the following: - accounts(id) - which creates: get - https://myinstance.crm.dynamics.com/api/data/v9.0/accounts(id) - if you were creating an account, you would pass the following: - accounts - which creates: post - https://myinstance.crm.dynamics.com/api/data/v9.0/accounts - body contains the data. - Method to use for the request - Content your passing to the request - Headers in addition to the default headers added by for Executing a web request - Content Type attach to the request. this defaults to application/json if not set. + Executes a web request against the Dataverse Web API. + HTTP method to use for the request + The path and query parameters that you wish to pass onto the Web API + Request content + Additional headers + Content Type for the request. Defaults to + Cancellation token for the request + + + + Executes an asychronous web request against the Dataverse Web API. + HTTP method to use for the request + The path and query parameters that you wish to pass onto the Web API + Request content + Additional headers + Content Type for the request. Defaults to Cancellation token for the request @@ -2329,7 +2339,7 @@ Defaults to True. - When true, this setting applies the default connection routing strategy to connections to Dataverse.This will 'prefer' a given node when interacting with Dataverse which improves overall connection performance.When set to false, each call to Dataverse will be routed to any given node supporting your organization.See https://docs.microsoft.com/en-us/powerapps/developer/data-platform/api-limits#remove-the-affinity-cookie for proper use. + When true, this setting applies the default connection routing strategy to connections to Dataverse.This will 'prefer' a given node when interacting with Dataverse which improves overall connection performance.When set to false, each call to Dataverse will be routed to any given node supporting your organization.See Server affinity for proper use. @@ -2611,6 +2621,16 @@ Error Message Supporting Exception + + + + + + + + + + Used to encompass a ServiceClient Operation Exception @@ -2637,8 +2657,8 @@ Creates a CdsService Client Exception Error Message Error code - Data Properties Help Link + Data Properties diff --git a/src/nuspecs/Microsoft.PowerPlatform.Dataverse.Client.ReleaseNotes.txt b/src/nuspecs/Microsoft.PowerPlatform.Dataverse.Client.ReleaseNotes.txt index 7789c9c..ab095c0 100644 --- a/src/nuspecs/Microsoft.PowerPlatform.Dataverse.Client.ReleaseNotes.txt +++ b/src/nuspecs/Microsoft.PowerPlatform.Dataverse.Client.ReleaseNotes.txt @@ -7,6 +7,17 @@ Notice: Note: Only AD on FullFramework, OAuth, Certificate, ClientSecret Authentication types are supported at this time. ++CURRENTRELEASEID++ +Updated Core SDK +Added new properties to Organization detail to report Schema Type and Deployment Type. +Dependency changes: + System.Text.Json moved to 7.0.3 + Microsoft.Identity.Client moved to 4.56.0 + Microsoft.Identity.Client.Extensions.Msal moved to 4.56.0 + Removed System.Security.Cryptography.Xml was transitive include to support CVE which is no longer necessary due to depending package updates + Removed System.Security.Cryptography.Pkcs was transitive include to support CVE which is no longer necessary due to depending package updates + + +1.1.14: Updated Core SDK Libs Fixed issue with DataCenter ID not populating in Organization Detail object returned by the client. Fixed a hang problem when parsing multi layered exceptions diff --git a/src/nuspecs/Microsoft.PowerPlatform.Dataverse.Client.nuspec b/src/nuspecs/Microsoft.PowerPlatform.Dataverse.Client.nuspec index f93f8cf..99b2ca8 100644 --- a/src/nuspecs/Microsoft.PowerPlatform.Dataverse.Client.nuspec +++ b/src/nuspecs/Microsoft.PowerPlatform.Dataverse.Client.nuspec @@ -19,33 +19,33 @@ - - + + - + - - + + - + - - + + - + @@ -60,13 +60,13 @@ - + - - + + @@ -74,8 +74,6 @@ - -