Skip to main content


Generating Client Code from OData Metadata

Sometimes when we need to call APIs, we are just given the information about the entities in the form of OData metadata . Now when we are not aware about possible methods and their parameters which are exposed for use, it becomes very cumbersome and time consuming to call even a single method. Till some extent, we can still manage our life for Get methods as they are easy to guess using entity names, but when it comes to PUT/POST/PATCH , things are not straight forward. And here comes the need to generate classes with given metadata. Let’s have a look, on how we can generate these client-side proxy classes. Install the required Visual Studio Extension I’m using Visual Studio 2019 but the equivalent features are available in other versions too. Navigate to Manage Extensions dialog and search for OData Connected Service as shown below and install it. Using this tool, one can easily generate classes for all the entities and complex types which are menti

Making a call to Retail Server APIs

This article will talk about how to make a call to Retail APIs (non anonymous )  and what all information is required to get the response. I started by generating the access token using username-password flow and obviously the client id as shown in below image: Then I tried to make a call to an API using Postman as shown below: And here is the 401 Unauthorized error ☹ and the reason is -  Microsoft_Dynamics_Commerce_Runtime_DeviceTokenNotPresen t After spending hours, I got to know that Retail APIs  can’t be called just by passing the access token. In order to make API call successful, there is one additional information ‘ devicetoken ’, which needs to be sent.  Now where to pass this information? Well, fortunately I was able to figure it out. This devicetoken  has to be passed as an header while making API call as shown below: Once device token is passed, I received the expected response from the API.  Hope I saved your hours

Providing Admin Consent to Azure Registered Application

It has been a while since I drafted anything. So, all these times, I was busy learning new things, which includes Dynamics 365, Graph API, MS Teams, some of the Azure services and much more.  Basically, this entire tenure was full of ups and downs where some things went very smooth and some things took many hours to get sorted. But now, I am back with so much on my plate and of course my next few posts would be majorly on troubleshooting part and how-tos. May be, there would be similar solutions which you may find on the internet, but I would still love to add it on my own blogger with my own findings for my own future references. With all this, let us get started with our first troubleshooting tip. Background The requirement was about adding a new Task in Planner , which is part of Office 365 . Now for any adding Task , we have to traverse through Groups , then Bucket and then inside any defined Bucket we can create a Task .  In order to perform all these, au

Jupyter error - No module named ‘selenium’

Recently I installed Anaconda to learn more about it and the first thing I was about to try was opening a web page automatically using Selenium. So, to perform this, I used Jupyter and tried to import Selenium webdriver. Till here, everything went well, but when I ran my code using Jupyter Notebook, I got an error: ‘ No module named ‘selenium ’. The strange thing is, I got an error, although I have got Selenium installed on my machine using pip with below command:  pip install selenium. Now what could be the reason? So, to analyze it further, I wrote the same Python code in Visual Studio and ran it. It worked perfectly alright. So, I just thought to give a try to check the version of Selenium and first I tried with pip as shown below: As the above message says, it is already installed and didn’t complain anything. So, next I thought to try with Anaconda command prompt as shown below:  Did you notice that rectangl

Utilizing Azure Blob and WebJob to Convert Excel Files to Flat File Format

I believe, there are many articles or blogs already available which speaks about how to convert an excel file to a comma separated file using C# and in all the cases (which I referred), excel is read from a hard drive of a local machine and csv file is saved back to the same hard drive. But in spite of knowing this, again, I’m going to draft another post. Wondering, why? Well, this post is going to be slightly different in the way files are being read and saved back. Below are the major offerings of this post:     What if we have many excel files to convert but disk is not having enough space to save all of those? Same is the case for conversion output too. What if we don’t have permission to save our converted files on to the local machine? How can we run this conversion utility using web jobs? In order to address the above challenges, we can utilize Azure capabilities wherein we will do everything on the fly without utilizing disk space as a storage for our files. Let