How to Connect to CRM Dynamics Online Odata endpoint LinqPad? - dynamics-crm-2011

I'm able to connect to self-hosted CRM sites just fine with the default Odata driver within LinqPad. The URI I use in the "WCF Data Services (OData) Connection" dialog for self-hosted is in the format http://MyServer.com/MyOrgName/xrmservices/2011/OrganizationData.svc. The user name is in the format "domain\username".
When I attempt to follow the same format for an CRM Online instance, it doesn't work.
I'm guessing it's either because of the https, or the windows live credentials, but don't know what steps to take to fix the problem...
Please note, I want to use the odata provider, not the CRM 2011 provider. The odata provider gives me the URL to retrieve the data which is extremely helpful for javascript. The CRM 2011 provider gives the fetch XML, which isn't what I want to use in this case...

I contacted LinqPad and they said they don't currently support Windows Live Authentication. I'm guessing that one would have to write a plugin and use the logic from this page to handle the authentication issues.

Related

3-Legged OAuth2 Authorization code flow for Excel?

This might be a long shot, but I'm using the MYOB Business API which has the same OAuth authorization flow as the LinkedIn API - 3-legged - and am planning on making queries to it through Excel, most likely power query.
The big issue with this is obviously dealing with the sending and receiving of the code=, access_token and refresh_token. Most of the searches I've done relating to using Power Query and OAuth seem to only deal with username and password OAuth and not the authorization flow, shown here https://developer.indeed.com/docs/authorization/3-legged-oauth.
I'm curious if there is Power Query M Language code out there that I haven't come across or if I have to go the route of building an OData Feed (or another method?) on top of the API so that it can be queried in Excel?
Any help or further direction would be appreciated.
I should also note they have a website containing their Postman collection using different languages here; https://accountrightapi.myob.cloud/?version=latest#f2b93dfa-803f-44b9-8a07-756874494227
The short answer for Excel is: No, but Asterisk.
Excel Power Query doesn't support custom connectors (as of 2022-02-07)
To securely use Auth2 flow, it requires a custom connector
There is some built in support, if the connector supports it. ( Like Web or OData)
Here's a summarized version of Chris Web. (He's a Power Query Wizard) Connecting To REST APIs With OAuth2 Authentication In Power Query/Power BI # blog.crossjoin.co.uk
the definitive, Microsoft-endorsed answer to this question is:
If want to connect from Power BI to a REST API that uses OAuth2 authentication then you need to build a custom connector.
You can use OAuth2 credential flow in regular Power Query queries without needing a custom connector.
this is not recommended: it’s not secure and it’s not reliable. In particular, hard-coding usernames/passwords or client ids/client secrets in your M code is a really bad idea
The only exception is that you can connect to some APIs that use AAD authentication using the built-in web or OData connectors
To use a custom connector in the Power BI Service, it requires an on-premises gateway
How to implement OAuth2 flow
Creating a Custom Connector
Using built-in OAuth2 flow using with Azure Active Directory using the Web and OData connectors
I used excel VBA code to handle the MYOB API connection by invoking MS Edge, with Seliumn Basic drivers.
VBA then executes the MYOB API Connector Add-On.
VBA receives the database files I require from MYOB and writes them to a.txt file location on my PC.
VBA then refreshes the data connections for Power Query which runs the M Code I’ve written in advanced editor.
When I close excel, VBA closes all the connections and MYOB add on connector.

SharePoint Framework AadHttpClient - operation is part of experimental feature

I'm trying to use the AadHttpClient library that comes with SPFx to connect to a custom API secured by an app registration in Azure AD.
However when I run the web part in the workbench, SharePoint Online (in the tenant _layouts) I get an error in the console saying that the feature is experimental.
Error: The requested operation is part of an experimental feature that is not supported in the current environment.
As far as I can make out from this article, it should be in general release.
When connecting to Azure AD-secured APIs, we recommend that you use the MSGraphClient and AadHttpClient classes, which are now generally available. For more information about the recommended models, see Connect to Azure AD-secured APIs in SharePoint Framework solutions and Use the MSGraphClient to connect to Microsoft Graph.
When I go to the API management page in SP Admin site I get a popup stating
***Access to Azure Active Directory resources using the SharePoint Framework will be available soon.
So I'm a bit confused.
I also get an error on the API management page saying..
A null value was found with the expected type 'Edm.String[Nullable=False]'. The expected type 'Edm.String[Nullable=False]' does not allow null values.
I also get the same error when I try in PowerShell running
Get-SPOTenantServicePrincipalPermissionRequests
I'm not 100% sure I understand the relevance of the API management page - does an admin need to approve just once for the web part then all users are good to go?
I was having the same issue. The github thread can be found here. What fixed it for me was adding the account I was using as a site collection admin.
Connect-SPOService
Set-SPOUser -Site https://TENANT-admin.sharepoint.com -IsSiteCollectionAdmin $True -LoginName yourLoginName

Authenticating Excel Task Pane app to CRM Online

I would like to write an Excel Task Pane app to interact with CRM Online - to take data from the Excel worksheet, process it and push it into a CRM entity record. My Excel users are on Office 365, as is CRM Online (obviously). We are using ADFS 2.0.
The specific problem I am experiencing is that I do not know how to get authentication to work for the Task Pane app: specifically, to the OData endpoint via JavaScript. Authentication is not my area, so I don't know how to precisely phrase this next requirement, but as we are using Office 365/CRM Online/ADFS then I need to use the logged-in user's Windows AD credentials to authenticate the request.
As far as I can tell, it is not possible to authenticate the Task Pane app directly with CRM Online, and I would like to know if that is known to be true, and if not what method(s) I can use.
I do know that there is a hack for indirect authentication published by a couple of people (http://survivingcrm.com/2013/12/connecting-crm-online-odata-feed-excel-2013-power-query/ or http://www.crmconsult.co.uk/connecting-to-crm-20112013-with-odata-in-excel-2013/) which authenticates the user via the CRM plug-in and then allows other OData connections to succeed - but it doesn't work for me, and I'm averse to rolling out functionality to users which relies on back-door methods.
In the end, I ended used using SOAP in VBA instead of oData in the Task Pane, which meant I was able to use Jason Lattimer's hard work from http://jlattimer.blogspot.co.uk/2015/02/soap-only-authentication-using-vba.html - I don't think there is any way I would have figured out the Authentication piece without that post, so many thanks to him.

how an utility application connects with all three deployment types of CRM

I am working with an utility application which has user authentication(i.e. it takes username password from users as input). Previously I worked with CRM online. Now requirement is this utility should be able to connect all three deployment types of CRM (i.e. Onpremise, Online, IFD).I am not sure how to do it. I was using crmservice.cs and deviceidmanager.cs for connection with CRM.
From other online resources I found that in connection string if I add Authentication Type="Integrated"/"AD"/"SPLA"/"Passport" , it should work.
So If I write my connection string like
connectionString="Authentication Type="Integrated";Data Source= LINE500\sage;Initial Catalog=cs3live; Integrated Security=false; User Id=XXXXXXXX;Password=XXXXXXXX"
Is this gonna work? FYI, I have only CRM online trial account to verify my code.So I need your help on this.
Thanks.
a CRM Online environment can use Windows Live ID or Office 365 authentication, DeviceID and DevicePassword are necessary only when connecting with Windows Live ID credentials. So you need to know which authentication type is in use in your CRM.
To be able to connect to different environments I suggest to use the Simplified Connection, you can find more information here:
https://stackoverflow.com/a/15930366/2191473
and here:
Sample: Simplified Connection Quick Start using Microsoft Dynamics CRM

Dynamics CRM Online and Impersonation

I'm using a code from CRM2011KIT "CRM Online from PHP". And I'm able to create or update entities without any problem from PHP.
But now we need to use impersonation, and I cannot find any example or documents how to do that using LiveID authorization, CRM Online and simple XML requests (of course I'm not able to use SDK from PHP).
I will be glad to hear that somebody solve the problem like mine or have some idea. But I even cannot imagine where to place "CallerID" in current soap XML requests
Have you looked at this?
CRM Online 2011 WebServices - SOAP Only Client
They do bare SOAP requests and there is support for LiveID & Office365 logins

Resources