static void Main(string[] args)
{
IOrganizationService oServiceProxy;
try
{
string ConnectionStringSecret = "AuthType=ClientSecret; " +
"ClientId=<<APP ID FROM AZURE>>; " +
"ClientSecret=<<CLIENT SECRET>>; " +
"Url=https://<<YOUR ORG>>.crm<<REGION NUMBER>>.dynamics.com/;";
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
//Create the Dynamics 365 Connection:
CrmServiceClient crmServiceClient = new CrmServiceClient(ConnectionStringSecret);
if (!crmServiceClient.IsReady)
{
Console.WriteLine(crmServiceClient.LastCrmError);
}
//Create the IOrganizationService:
oServiceProxy = (IOrganizationService)crmServiceClient.OrganizationWebProxyClient != null ? (IOrganizationService)crmServiceClient.OrganizationWebProxyClient : (IOrganizationService)crmServiceClient.OrganizationServiceProxy;
Console.WriteLine("Validating Connection");
if (oServiceProxy != null)
{
//Get the current user ID:
Guid userid = ((WhoAmIResponse)crmServiceClient.Execute(new WhoAmIRequest())).UserId;
if (userid != Guid.Empty)
{
Console.WriteLine("Connection Successful!");
}
}
else
{
Console.WriteLine("Connection failed...");
}
}
catch (Exception ex)
{
Console.WriteLine("Error - " + ex.ToString());
}
Console.ReadKey();
}
Gotchas –
- line 10, the MS docs say the url format is https://<<your org>>.crm.dynamics.com – you actually need the region code too, e.g. https://yourEUROPEorg.crm4.dynamics.com or https://yourUKorg.crm11.dynamics.com
- this line is sometimes and seemingly randomly required prior to the creation of the CrmServiceClient to ensure the correct protocol is used.