cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
MattB-MSFT
Microsoft
Microsoft

Announcing the .net Core SDK for Common Data Service (CDS) - External Client Development

Folks, 

As many of you know, we have a existing .net full framework SDK that we provide for folks to develop client applications that communicate with CDS.  This SDK has existed for a long period and arose from the Dynamics 365 aspects of our platform. 

We have continued to support this SDK over the last many years over many versions of our platform.   

 

We have been working to update this SDK package to better address the needs of the current platform and the technologies that many of our partners who develop client applications to integrate with the Power Platform use.   We are now ready to share this with the larger community for testing and feedback. 

 

Today we have posted the alpha version of the Microsoft.Powerplatform.Cds.Client on nuget.  along with a few additional packages that we are using to split out the Dynamics Sales / Service and Marketing centric messages and helpers from the core CDS platform SDK

 

This version of the SDK libs supports the following and has the following notices: 

  1. .net full framework 4.6.2, 4.7.2, 4.8 and .net core 3.0, 3.1 
  2. We are supporting only Client Secret / Cert flows for .net core.  On .net framework additionally we support OAuth User flows
  3. We are shipping the initial drop using ADAL.net for the Auth Lib.   We MAY change to use MSAL shortly 
    1. MSAL would enabled us to support User Interactive flows on .net core. 
  4. The Namespaces of areas WILL change.  We do not know what they will change too just yet but they will change before we “release” this.
  5. The Assembly Names Will likely change at least once more. 
  6. The Message types that are part of the client have been reduced to CDS Core server messages only.  Things like “QualifyLeadRequest” have been removed to their own Nuget package ( Microsoft.Dynamics.Sdk.Messages ) 
  7. We will likely ship more extension packages that will contain the “CRM” messages,  though over time, we will likely split the namespaces of those messages up based on service line,  think Field Service or Sales or Customer Service, etc..
  8. Plugin Development using this Client is NOT supported at this time. 

We have pushed the first version up to nuget,  its tagged as preview and I encourage you to read the release notes we provide with the nuget packages. As with most of our Nuget packages that are intended as tools or for developer consumption, we extensively comment in release notes. 

 

Samples and such will be updated overtime on the PowerApps Samples GitHub Site as we move forward with the evolution of this capability.   That said, any of the existing CrmServiceClient samples can be used as a base to start.

 

From a scenario point of view,  we are particularity interested in any issues or challenges when using these library in either Asp.net Core or Functions scenarios. 

 

Links for the packages:

https://www.nuget.org/packages/Microsoft.Powerplatform.Cds.Client

https://www.nuget.org/packages/Microsoft.Powerplatform.Cds.Client.Dynamics

https://www.nuget.org/packages/Microsoft.Dynamics.Sdk.Messages

 

for 99% of your applications working against Dynamics, you should only need Microsoft.Powerplatform.Cds.Client and Microsoft.Dynamics.Sdk.Messages.

if your working against CDS Only,  you should only need Microsoft.Powerplatform.Cds.Client.  If you do not experience that, or find missing messages in the CDS only scenarios, please let us know. 

 

Note: Please be aware that during the Alpha \ Beta phases, these nuget packages are not supported via official channels

Support is aware of them, however you will likely be directed back to the community forums for support during the Alpha \ Beta phases.  A number of our dev's and PM's do monitor this channel and can respond to questions and feedback. 

 

As we progress this process it is our intent to deprecate then retire the older Microsoft.Xrm.Tooling.* Packages and replace them with updates built on this new set of Nuget Packages. 

 

Thanks All, and we look forward to your feedback on this.

 

Update:  We have setup a github issues site to track issues for this effort: 

Update#2:  We have now begun posting the code for the CdsServiceClient on this git Hub repro for reference. 

Please find the site here: https://github.com/microsoft/PowerPlatform-CdsServiceClient 

 

MattB-MSFT.  

 

44 REPLIES 44
saumiltrivedi14
New Member

Our Requirement:
We have Azure Linux server resource group. So we need to create azure function in .net core 3.1.

So, we got the following package which provide supports in .net core azure function
Microsoft.Powerplatform.Cds.Client -Version 0.2.14-Alpha

 

Let me include few details about our implementation:

1. We have used Dynamics connection string - ClientSecret Authentication types

2. Following things working fine with the above connection string.

 - Retrieve records from Entities - Working fine

 - Insert/Update operation in Entity which doesn't contain EntityReference type (Lookup) - Working fine.

3. When we perform Insert/update operation in Entity which contains EntityReference type (Lookup), it gives error
Operation return invalid status code 'Bad Request'

 

Let me attach some code which we implemented in console application:

 

var service = new CdsServiceClient(connectionString);
 if (service.IsReady)
 {
   Entity account = GetAccountEntity(service);
   Entity coupon = GetCouponEntity(service);


   Entity couponPerCustomer = new Entity("couponpercustomer");
   couponPerCustomer["couponid"] = coupon.ToEntityReference();
   couponPerCustomer["customerid"] = account.ToEntityReference();
   service.Create(couponPerCustomer);
 }

 

When we run above code it gives error in "service.Create(couponPerCustomer)"
Error: Operation return invalid status code 'Bad Request'

Error.png

 

Josh_A
Advocate I
Advocate I

@MattB-MSFT I am in the process of migrating our code to .net core so we can leverage v2 and v3 azure runtimes.  In the past we have used the a IServiceManagement<IOrganizationService> factory to handle our connections to CRM, but I am noticing that in the Microsoft.Cds.Sdk that the IServiceManagement is not part of the library.  After playing around for a little bit I noticed the clone method of the CdsServiceClient and it appears that this is the way to get a new IOrganizationService. 

 

Is the clone method intended to replace the old Service Management way of doing things or is this functionality just not been migrated yet?

dongta
New Member

Ghkgf

Sorry about the delayed response here…. For the future;

The best way to get our attention on these sorts of issues is here: https://github.com/microsoft/PowerPlatform-CdsServiceClient/issues

 

In this case there was a bug that we resolved for this already based on a bug report regarding using alternate keys + Entity references.

If your still having issues with it, please do open an issue on the GitHub issues list and we can take a look.

 

Again sorry about the delay in seeing this.

@Josh_A 
Yes, that is how you create copies now.   As you saw,  we removed IServiceManagement from the underlying libraries.
That interface was part of the WS-TRUST infrastructure that has been deprecated.

 

thanks 

MattB

Helpful resources

Announcements
UG GA Amplification 768x460.png

Launching new user group features

Learn how to create your own user groups today!

Community Connections 768x460.jpg

Community & How To Videos

Check out the new Power Platform Community Connections gallery!

Welcome Super Users.jpg

Super User Season 2

Congratulations, the new Super User Season 2 for 2021 has started!

Carousel 2021 Release Wave 2 Plan 768x460.jpg

2021 Release Wave 2 Plan

Power Platform release plan for the 2021 release wave 2 describes all new features releasing from October 2021 through March 2022.

Users online (1,243)