With version 9.0 of Dynamics 365 CE we now have Online Admin API that supports the following operations like Create, Retrieve, Delete, Backup and Restore instances. The user needs to have the Global Administrator or Service Administrator role in the Office 365 tenant to perform these operations.
As a first step we need to register the application with Azure Active Directory.
https://nishantrana.me/2016/11/13/register-a-dynamics-365-app-with-azure-active-directory/
and get the values for
Client Id and Authority.
Get the Service URL here
Sharing a sample code which can be used to retrieve all the instances in a specific tenant.
The sample code: –
public class MySampleApp { private const string Resource = "https://admin.services.crm.dynamics.com/"; // username and password private const string UserName = "username.onmicrosoft.com"; private const string Password = "password"; // client id and authority of the application registered private const string ClientId = "b2c5028d-57e6-4df7-9940-3243214948b"; private const string Authority = "https://login.microsoftonline.com/3432432e2-5fbe-4b78-a55a-bcb342d4f859/"; private static AuthenticationResult _authResult; private static void Main(string[] args) { var authContext = new AuthenticationContext(Authority, false); var credentials = new UserCredential(UserName, Password); // Get the token _authResult = authContext.AcquireToken(Resource, ClientId, credentials); Task.WaitAll(Task.Run(async () => await GetInstances())); } private static async Task GetInstances() { var httpClient = new HttpClient { BaseAddress = new Uri(Resource), Timeout = new TimeSpan(0, 2, 0) }; httpClient.DefaultRequestHeaders.Add("OData-MaxVersion", "4.0"); httpClient.DefaultRequestHeaders.Add("OData-Version", "4.0"); httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _authResult.AccessToken); var retrieveResponse = await httpClient.GetAsync("/api/v1/instances"); if (retrieveResponse.IsSuccessStatusCode) { var jRetrieveResponse = retrieveResponse.Content.ReadAsStringAsync().Result; var result = JArray.Parse(jRetrieveResponse); foreach (var data in result) Console.Write("Id " + data["Id"] + "\nUnique Name " + data["UniqueName"]); } } }
Result: –
The other properties: –
4 thoughts on “Sample Code to retrieve instances using Online Management API in Dynamics 365 Customer Engagement”