tag:blogger.com,1999:blog-10891429479622707472024-03-05T02:09:21.986-08:00Dr. AlexInspirational. Innovative. Nonstop.Alex Anikievhttp://www.blogger.com/profile/13438665643699572584noreply@blogger.comBlogger3125tag:blogger.com,1999:blog-1089142947962270747.post-80920638774879704612018-07-19T12:36:00.001-07:002019-09-20T10:41:53.047-07:00Anikiev_Sukretna Machine Learning approach for Natural Language Processing (NLP) text classification problem<div class="WordSection1">
<div class="MsoNormal">
<b><span style="font-size: 14.0pt;">Machine Learning approach for Natural Language Processing (NLP) text classification problem<o:p></o:p></span></b><br />
<b><span style="font-size: 14.0pt;"><br /></span></b>
<b><span style="background: yellow; font-size: 14pt;">Download: </span></b><span style="background: yellow; mso-highlight: yellow;">Please download the full article (<b>47 pages</b>) PDF from here:</span><span style="background: yellow; mso-highlight: yellow;"><a href="https://1drv.ms/b/s!AvejO2r1DmacgYdbnfzLrJZ-SOxIsA">https://1drv.ms/b/s!AvejO2r1DmacgYdbnfzLrJZ-SOxIsA</a></span><br />
<br /></div>
<div class="MsoNormal">
The purpose of this document is to illustrate the application of Machine Learning approach for Natural Language Processing (NLP) text classification problem. We would like to detail the math apparatus behind Natural Language Processing (NLP) and get the reader comfortable with the numbers. We are also the strong believers in visuals, that’s why in the text of the document we present diagrams for the ease of comprehension, analysis and comparison. This document may help a person passionate about Machine Learning and Document Classification to get started quickly <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><span style="font-size: 14.0pt;">About authors:<o:p></o:p></span></b></div>
<ul style="margin-top: 0in;" type="disc">
<li class="MsoListParagraphCxSpFirst" style="margin-left: 0in; mso-add-space: auto; mso-list: l0 level1 lfo3;"> Alex Anikiev (<a href="https://www.linkedin.com/in/anikiev/">LinkedIn</a>) holds Master’s degree in Computer Science and PhD degree in Applied Mathematics from the National University of Ukraine “KPI”, <o:p></o:p></li>
</ul>
<div class="MsoListParagraphCxSpMiddle">
Alex is interested in and passionate about Artificial intelligence and Machine Learning, works as Software Architect and lives in Redmond, WA<o:p></o:p></div>
<ul style="margin-top: 0in;" type="disc">
<li class="MsoListParagraphCxSpMiddle" style="margin-left: 0in; mso-add-space: auto; mso-list: l0 level1 lfo3;"> Alena Sukretna (<a href="https://www.linkedin.com/in/alona-sukretna/">LinkedIn</a>) holds Master’s degree in Computer Science from the National University of Ukraine “KPI” and Nano-degree Data Science and Data Analysis from Udacity,<o:p></o:p></li>
</ul>
<div class="MsoListParagraphCxSpLast">
Alena is interested in and passionate about Artificial intelligence and Machine Learning, currently working as a Freelance Data Scientist and lives in Redmond, WA<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><span style="font-size: 14.0pt;">Business problem: </span></b>Say that our customer has (or has access to) a large volume of information (data, documents, etc.) and they would love to be able to categorize the information into certain categories, structure it better, make better sense of it, draw their own meaningful insights from it, etc. Much like what you see on the <a href="https://www.bing.com/news">Bing News</a> web page where Bing is suggesting certain categories of information, for example, “FIFA World Cup”, “Wimbledon”, “U.S.”, “World”, etc. which might interest you<o:p></o:p></div>
<div class="MsoNormal">
<b><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnixyzHHVZlzNoDv5DwyDXX9nyhbA5kSZKW2DhALy-KBWGkOEcD8OpigqIzg5gMDVIyrd31vDWoPv_AiSORWMcZuQy5EPBNnHfo83anJVzFGpKfqkzeR2sZyZvzCl6Mg04y_fedS8edJCQ/s1600/image005-706280.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6580014478357319202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnixyzHHVZlzNoDv5DwyDXX9nyhbA5kSZKW2DhALy-KBWGkOEcD8OpigqIzg5gMDVIyrd31vDWoPv_AiSORWMcZuQy5EPBNnHfo83anJVzFGpKfqkzeR2sZyZvzCl6Mg04y_fedS8edJCQ/s320/image005-706280.jpg" /></a><o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><span style="font-size: 14.0pt;">Problem domain:</span></b><span style="font-size: 14.0pt;"> </span>This business problem is likely to fall into the Natural Language Processing (NLP) domain. Natural language processing (NLP) is an area of <a href="https://en.wikipedia.org/wiki/Computer_science" title="Computer science"><span style="color: windowtext; text-decoration: none;">computer science</span></a> and <a href="https://en.wikipedia.org/wiki/Artificial_intelligence" title="Artificial intelligence"><span style="color: windowtext; text-decoration: none;">artificial intelligence</span></a> concerned with the interactions between computers and human (natural) languages, in particular how to program computers to process and analyze large amounts of <a href="https://en.wikipedia.org/wiki/Natural_language" title="Natural language"><span style="color: windowtext; text-decoration: none;">natural language</span></a> data. You can find more information about Natural Language Processing (NLP) in general on Wikipedia here: <a href="https://en.wikipedia.org/wiki/Natural_language_processing">https://en.wikipedia.org/wiki/Natural_language_processing</a> <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><span style="font-size: 14.0pt;">Types of problems:</span></b><span style="font-size: 14.0pt;"> </span>There’re numerous problems formulated and known in the Natural Language Processing (NLP) domain. However, for the purposes of this document we’ll mention just a few instead. Namely, Search, Extraction and Classification. Depending on the business problem at hand we may define the right approach to solve the problem. Doing some business problem analysis upfront before start tackling it is proven to always be a good idea. Often the real business problem our client is attempting to solve is a Search problem when the real goal is to effectively and efficiently query and filter the info. Once the problem has been clarified (and re-identified) we may then leverage appropriate tools, for example, Azure Cognitive Services (perhaps, Bing Custom Search), Azure Search or OSS Elastic Search. In case the real problem is an Extraction problem when the data needs to be extracted and relationships between data elements need to be identified and visualized, the approach to extract triples (subject-predicate-object), storing them in a Graph data store and visualize them using a Graph structure for exploration and analysis may yield some very impressive practical results. For these purposes Azure Cosmos DB as No SQL data store along with Resource Description Framework (RDF) or Property Graph may be a perfect choice. Now if we look at the classic Machine Learning problems, Regression, Classification and Clustering, we can project them into the Text Analytics space. An example of Supervised Learning Classification task would be Document classification based on the labelled data. An example of Unsupervised Learning Clustering task would be Topic modeling. There’re also other popular Text Analytics tasks such as, Named Entity Recognition (NER), Keyword extraction, Document summarization, etc. Please note that these tasks may be resolved in multiple ways, either with the help of Azure Cloud services or with Python specialized libraries, etc. Some notable means which help tackling Text Analytics problems include Azure Cognitive Services, Azure ML Studio, specialized Python libraries (Scikit Learn, NLTK, Gensim, Spacy), Azure ML Workbench, Jupyter notebooks, Azure Text Analytics Toolkit <o:p></o:p></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx535HiauaK_0r5t4UejaihBRbTdyNmQsVuHv34JpmH1LOBg15zBuhb6aMXCiNInFvLgEwpXdrkXpqxVISwKbHLE5NPvLu8EeuHSB25gItZa7Y6LEWRDlkoPBYUFHax646VQBxqNgparnF/s1600/image006-708141.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6580014489968890338" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx535HiauaK_0r5t4UejaihBRbTdyNmQsVuHv34JpmH1LOBg15zBuhb6aMXCiNInFvLgEwpXdrkXpqxVISwKbHLE5NPvLu8EeuHSB25gItZa7Y6LEWRDlkoPBYUFHax646VQBxqNgparnF/s320/image006-708141.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><span style="font-size: 14.0pt;">Focus problem:</span></b><span style="font-size: 14.0pt;"> </span>For the purposes of this document we will focus on the Text Classification problem, specifically, Document Classification. Document Classification problem is a Supervised Learning problem which required a labelled data set for training. By other words, if we expect to categorize documents into N different categories, we’ll need to provide the system with enough examples of documents belonging to different categories for the system to learn from and be able to make a reliable prediction for new documents <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><span style="font-size: 14.0pt;">Types of approaches:</span></b><span style="font-size: 14.0pt;"> </span>To solve the Document Classification problem different approaches can be used. One approach may be Machine Learning (ML) which is more suitable for small and medium size data sets. Another approach may be Deep Learning (DL) using Neural Nets (NN) which is more suitable for medium and large data sets<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><span style="font-size: 14.0pt;">Focus approach:</span></b><span style="font-size: 14.0pt;"> </span>For the purposes of this document we will focus on Machine Learning (ML) approach for the Document Classification. A good place to start will be to consider using Naïve Bayes and Support Vector Machines (SVM) algorithms to tackle Document Classification problem. These algorithms apply for a single-label classification tasks and their parameters may be fine-tuned to achieve the best results. There’re other algorithms which may be applicable for the task, in the future articles we may consider them as well as multi-label classification task when multiple labels may be assigned to a document at the same time (this will require specific algorithms to be used) <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><span style="font-size: 14.0pt;">Solution architecture (E2E): </span></b>For the purposes of this document we would like to illustrate the End-to-end solution for the Document Classification problem which includes Research & Development (R&D) and Operationalization aspects. You may want to develop and test your models locally first in your Experimentation workspace using, for example, Azure ML Workbench, Jupyter notebooks and appropriate Python libraries. When you are comfortable with the performance of your model you may want to export its definition and wrap your models into a Docker Container for the ease of deployment into the Azure Cloud. Once moved to the Cloud your pre-trained model may be reused and invoked on-demand via Web Service from within the container. Azure Cloud allows you to manage container images and instances via Azure Container Registry (ACR) and Azure Container Service (ACS). In case you need to orchestrate a number of containers you may leverage Azure Kubernetes Service (AKS). After the model has been deployed and it is in use, at some point you may want to re-train it with the new additional data and leverage this new knowledge obtained from the new data for the more quality classification <b><span style="font-size: 14.0pt;"><o:p></o:p></span></b></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilu_Aiz513_ih8YVKr4Uih0ggFtuybRgM-r2YdBspSiJztNMV7oGQT28eBrlmNnW_J-muIdmKOcwm_4tuvcaPq60-NkGejahd1cMpxvZi2rKRw6RWLS-FDBEiYUvyvI4S5pkBCsXeuOt8O/s1600/image007-710529.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6580014501012999314" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilu_Aiz513_ih8YVKr4Uih0ggFtuybRgM-r2YdBspSiJztNMV7oGQT28eBrlmNnW_J-muIdmKOcwm_4tuvcaPq60-NkGejahd1cMpxvZi2rKRw6RWLS-FDBEiYUvyvI4S5pkBCsXeuOt8O/s320/image007-710529.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><span style="background: yellow; font-size: 14.0pt;">Download: </span></b><span style="background: yellow; mso-highlight: yellow;">Please download the full article (<b>47 pages</b>) PDF from here: </span><a href="https://1drv.ms/b/s!AvejO2r1DmacgYdbnfzLrJZ-SOxIsA"><span style="background: yellow; mso-highlight: yellow;">https://1drv.ms/b/s!AvejO2r1DmacgYdbnfzLrJZ-SOxIsA</span></a> <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><span style="font-size: 14.0pt;">Disclaimer: </span></b>This material is presented As Is with no warranties provided by the authors. This article is also available on our blog here: <a href="http://anikiev.blogspot.com/">http://anikiev.blogspot.com/</a>. Please note that the content of the article can be updated over time to better explain the topic <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><span style="font-size: 14.0pt;">Tags:</span></b> Microsoft, Azure, Cloud, Machine Learning, ML, Natural Language Processing, NLP, Document Classification, Python, Scikit Learn, Naïve Bayes, NB, Support Vector Machine, SVM, Stochastic Gradient Descent, SGD<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
</div>
Alex Anikievhttp://www.blogger.com/profile/13438665643699572584noreply@blogger.com34Redmond, WA, USA47.6739881 -122.12151247.5884501 -122.2828735 47.7595261 -121.9601505tag:blogger.com,1999:blog-1089142947962270747.post-3851823812627673652016-05-01T23:00:00.001-07:002016-05-01T23:23:19.267-07:00Warehouse Mobile Devices Portal for New Microsoft Dynamics AX [Not Production]<div class="WordSection1">
<div style="border-bottom: solid #5b9bd5 1.0pt; border: none; padding: 0in 0in 4.0pt 0in;">
<div align="center" class="MsoTitle" style="text-align: center;">
<b>Warehouse Mobile Devices Portal for New Microsoft Dynamics AX [Not Production]</b></div>
<div align="center" class="MsoTitle" style="text-align: center;">
<b><br /></b></div>
</div>
<div class="MsoNormal">
<b>Purpose:</b> The purpose of this article is to illustrate how to configure Warehouse Mobile Device Portal in New Microsoft Dynamics AX and quickly make it available on mobile devices for the purposes of POC (Proof of Concept), demonstration or workshop using Demo environment</div>
<div class="MsoNormal">
<o:p><br /></o:p></div>
<div class="MsoNormal">
<b>Scenario: </b>Often times for the purposes of POC (Proof of Concept), demonstration or workshop it is needed to configure Warehouse Mobile Device Portal in New Microsoft Dynamics AX Demo environment. In this article we’ll explore nuances of how to set up Warehouse Mobile Device Portal in New Microsoft Dynamics AX Demo environment, and what are the options while setting up your demonstration scenarios </div>
<div class="MsoNormal">
<o:p><br /></o:p></div>
<div class="MsoNormal">
<b><span style="color: red;">Important: Please follow the official guidance when settings up Warehouse Mobile Device Portal in New Microsoft Dynamics AX for Production purposes:</span> <a href="https://ax.help.dynamics.com/en/wiki/warehouse-mobile-devices-portal-for-microsoft-dynamics-ax/"> https://ax.help.dynamics.com/en/wiki/warehouse-mobile-devices-portal-for-microsoft-dynamics-ax/</a></b></div>
<div class="MsoNormal">
<b><o:p><br /></o:p></b></div>
<div class="MsoNormal">
<b>Walkthrough<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
We’ll begin with New Microsoft Dynamics AX deployment in the Cloud via LCS (Lifecycle Management Services): <a href="https://lcs.dynamics.com/">https://lcs.dynamics.com</a>. Once deployed the URL to access New Microsoft Dynamics AX may look like the following: <a href="https://alexaos.cloudax.dynamics.com/">https://alexaos.cloudax.dynamics.com/</a> <o:p></o:p></div>
<div class="MsoNormal">
For the purposes of this walkthrough we’ll deploy Demo topology of New Microsoft Dynamics AX<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>LCS project - Environments</i></div>
<div class="MsoNormal">
<i><o:p><br /></o:p></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhPXc69BCNDI-taBwRYnzabWGBtMxiwwKfy5mzhSPvIQLlNYzknDArXdyE1SkDhjgMnUvAxQKr6k4qsZbpRaB9WKatZfv7d0FDIgFcItEE8PBmdvB_Aj0ObwQjnxSJjQp2VRXtymMHWb8A/s1600/image001-735451.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967332912303890" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhPXc69BCNDI-taBwRYnzabWGBtMxiwwKfy5mzhSPvIQLlNYzknDArXdyE1SkDhjgMnUvAxQKr6k4qsZbpRaB9WKatZfv7d0FDIgFcItEE8PBmdvB_Aj0ObwQjnxSJjQp2VRXtymMHWb8A/s320/image001-735451.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
LCS user owning the project under which we deploy New Microsoft Dynamics AX will be created as Admin user in New Microsoft Dynamics AX<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>System administration > Users > Users</i></div>
<div class="MsoNormal">
<i><o:p><br /></o:p></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZu8GAWbqR0eCXXYnm5egXrR1hxzF_70NPNgG-2qWyBHHuyMKKGwe_7tjItYf2kaOHYS7LcwrbWdtzWzBRY4O4fh87VeXGlX3FlKU3Fd2FhmtLKFEvPCl1m_YPXyTe1j0Xw501_BH16RA6/s1600/image002-736739.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967335780286530" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZu8GAWbqR0eCXXYnm5egXrR1hxzF_70NPNgG-2qWyBHHuyMKKGwe_7tjItYf2kaOHYS7LcwrbWdtzWzBRY4O4fh87VeXGlX3FlKU3Fd2FhmtLKFEvPCl1m_YPXyTe1j0Xw501_BH16RA6/s320/image002-736739.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Let’s take a quick look at hosts file on the respective VM<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Hosts file<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-G2g9Z3mWwEjAP7uf-KV8sMzlgZ6rtayHBcKKtJBQPgHIl7dFpSOzF1wQvZvc8XhTwyCsB1imByHsOSYakr7BsKOq9e-6M-yhx5EyZSYDAwFtAeOcvlbSgeVKhb3gsorK_Vj8jQenm0rR/s1600/image003-737677.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967341782017954" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-G2g9Z3mWwEjAP7uf-KV8sMzlgZ6rtayHBcKKtJBQPgHIl7dFpSOzF1wQvZvc8XhTwyCsB1imByHsOSYakr7BsKOq9e-6M-yhx5EyZSYDAwFtAeOcvlbSgeVKhb3gsorK_Vj8jQenm0rR/s320/image003-737677.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Hosts file<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1Jv791qN3DYRyJ7kvSXh35eeMkfjMQw_w9ZexN0bFgQX9x101AqX0neeib4wyW9Z_Pn7GPyGc5cLWs5V8Yko3dVrRjL2fj6d6jyYDIF62N4RXo3ocz0LPA_XHGkbwHnoWAT_nWi-cU7xL/s1600/image004-739120.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967345886448290" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1Jv791qN3DYRyJ7kvSXh35eeMkfjMQw_w9ZexN0bFgQX9x101AqX0neeib4wyW9Z_Pn7GPyGc5cLWs5V8Yko3dVrRjL2fj6d6jyYDIF62N4RXo3ocz0LPA_XHGkbwHnoWAT_nWi-cU7xL/s320/image004-739120.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Alright, localhost (127.0.0.1) is mapped to alexaos.cloudax.dynamics.com </div>
<div class="MsoNormal">
<o:p><br /></o:p></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none;"> <tbody>
<tr> <td style="border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 467.5pt;" valign="top" width="935"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
127.0.0.1 alexaos.cloudax.dynamics.com<o:p></o:p></div>
</td> </tr>
</tbody> </table>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Now let’s take a quick look at IIS Web sites deployed via IIS Manager</div>
<div class="MsoNormal">
<o:p><br /></o:p></div>
<div class="MsoNormal">
<i>IIS Manager</i></div>
<div class="MsoNormal">
<i><o:p><br /></o:p></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqZr_T8Y_8b9utIIdlmVVpslkqicegMvPf-SelDU7LNEFinwmatVgslcoGkXqBeSkLeRPWc3Do3_Z2BYhvVwZUF5WMT3g7JZr7Ry07ImfYma23V-Ecp4lkxHndKcQT7CmxfSus3waBzCbP/s1600/image005-740019.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967352357729954" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqZr_T8Y_8b9utIIdlmVVpslkqicegMvPf-SelDU7LNEFinwmatVgslcoGkXqBeSkLeRPWc3Do3_Z2BYhvVwZUF5WMT3g7JZr7Ry07ImfYma23V-Ecp4lkxHndKcQT7CmxfSus3waBzCbP/s320/image005-740019.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
There’s AOSService IIS Web site deployed<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>IIS Manager > Sites > AOSService<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXj-nCo435tpdfi24q9rkFBjZvJY8lpX72GpR4bgHkhBzFN0LARouX1J6E89adTn_T5Uz-u5jRW4tb9-q6jU4tXMBWYxycH7us43Ox_EucWr_AmFGFXYqv-tsgcXLYX-W1EFOsvs5Fqd70/s1600/image006-740828.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967355748308274" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXj-nCo435tpdfi24q9rkFBjZvJY8lpX72GpR4bgHkhBzFN0LARouX1J6E89adTn_T5Uz-u5jRW4tb9-q6jU4tXMBWYxycH7us43Ox_EucWr_AmFGFXYqv-tsgcXLYX-W1EFOsvs5Fqd70/s320/image006-740828.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
We’ll examine AOSService IIS Web site bindings<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Site Bindings<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim9N_KENlJJwOlCQoMHDvXwnLFpxBeCQiBJKHZuRbCfKWq2VpkUOpV0Ge4JcW26KMeau3x90Zxn5fdgw4xjLmMPrSNZEXPtbMLCsXdYayxKzifoOhHWujy6U3ds91p0F5sUdOCkOnRkzLS/s1600/image007-741646.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967357172248514" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim9N_KENlJJwOlCQoMHDvXwnLFpxBeCQiBJKHZuRbCfKWq2VpkUOpV0Ge4JcW26KMeau3x90Zxn5fdgw4xjLmMPrSNZEXPtbMLCsXdYayxKzifoOhHWujy6U3ds91p0F5sUdOCkOnRkzLS/s320/image007-741646.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
2 bindings do exist by default for AOS itself and SOAP Web Services endpoint on port 443 (HTTPS). Both bindings are registered for host names. Host Names: alexaos.cloudapp.dynamics.com, alexaossoap.cloudax.dynamics.com<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Edit Site Binding<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRX5uOZ7Y5DNLhix7B_64YFBH7pgMa7ZwEcxgf6w2tFHd2BQf8Aog9wE8unKaoAi2YhhfHoCFxS0w1p0YPCUFbbZ6JvxsXMMp0IrKO2jWFUjhmuQtC894lpw18iKL1ipE7_w94dDiyun5o/s1600/image008-742456.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967360915798274" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRX5uOZ7Y5DNLhix7B_64YFBH7pgMa7ZwEcxgf6w2tFHd2BQf8Aog9wE8unKaoAi2YhhfHoCFxS0w1p0YPCUFbbZ6JvxsXMMp0IrKO2jWFUjhmuQtC894lpw18iKL1ipE7_w94dDiyun5o/s320/image008-742456.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
There’s also a respective certificate assigned<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Certificate - General<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI1nISxvMdhq_sUChzWnVxtEb2x2WRrg8hZtBoeGm8pNAHPrKT6kOAlvPSSUE1j1eAnYiaL7enTIcr8-Ybc5xDuGrhK7qsZ8VUrzDeunIzAesJxAcp1GsbAya9D_9aVok6sc7Tq6athsN4/s1600/image009-743302.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967365784159266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI1nISxvMdhq_sUChzWnVxtEb2x2WRrg8hZtBoeGm8pNAHPrKT6kOAlvPSSUE1j1eAnYiaL7enTIcr8-Ybc5xDuGrhK7qsZ8VUrzDeunIzAesJxAcp1GsbAya9D_9aVok6sc7Tq6athsN4/s320/image009-743302.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Certificate – Certificate Path<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3x1POxlnUEE3ar-FiO3AzKO67xfTaKGVrB5ZhubhAXmsGqMnj3X_kDSJGFoqp9guzKwp0k1lN-UESVanMgRsrIOw0XY9AjwSqTE5hf4aCUAyYiHlt0_Dksi72CBZKp0BRjie_CfwwmbJV/s1600/image010-744221.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967368677442962" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3x1POxlnUEE3ar-FiO3AzKO67xfTaKGVrB5ZhubhAXmsGqMnj3X_kDSJGFoqp9guzKwp0k1lN-UESVanMgRsrIOw0XY9AjwSqTE5hf4aCUAyYiHlt0_Dksi72CBZKp0BRjie_CfwwmbJV/s320/image010-744221.png" /></a> <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
AOSService IIS Web site is assigned to AOSService IIS Application pool<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>IIS Manager > Application Pools <o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj1Ug_vBEgNNxfOsQCIyueCuAOlrwgepSvEAuRdvdF5V1BhWYyUkxkC0eLxdYH6nb5jziUpjYPnbh-4EbJjver1OLeCTPG47AzTSGGmtK79Ktwte0PvBSdfUspVXBcnCubB4I8QnRbESXB/s1600/image011-745021.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967372403242786" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj1Ug_vBEgNNxfOsQCIyueCuAOlrwgepSvEAuRdvdF5V1BhWYyUkxkC0eLxdYH6nb5jziUpjYPnbh-4EbJjver1OLeCTPG47AzTSGGmtK79Ktwte0PvBSdfUspVXBcnCubB4I8QnRbESXB/s320/image011-745021.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Also there’s a registered domain name for alexaos.cloudax.dynamics.com that translates to a particular public IP address<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Cmd - ping<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS6fqb9YffRhTylQ8M4WBe8ttQd0rhfY7Iur6kRR32Xe7ld3JN1q8-Ac9y1UyxEK8CjLMiLRPVn6A1L09pSYsuhV_PegaddxtNGUcWj49HqIdWd3r0fIzFip7QRDi_Njmqqx75znGuiS2E/s1600/image012-746017.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967376598186882" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS6fqb9YffRhTylQ8M4WBe8ttQd0rhfY7Iur6kRR32Xe7ld3JN1q8-Ac9y1UyxEK8CjLMiLRPVn6A1L09pSYsuhV_PegaddxtNGUcWj49HqIdWd3r0fIzFip7QRDi_Njmqqx75znGuiS2E/s320/image012-746017.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
If we look at the respective VM HTTPS endpoint is enabled by default on standard port 443<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Azure VM HTTPS Endpoint<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhguRgU4z__j4IM7ckHi-Kc8X7GBhiRO8LkWB9NCtlcCJEymlYfKKEAVOSnEP101FCLqKmmwOssQfr7gRM6tLs5LIQt7d7svrSUkTkprFrqmcFNNI5v_G53e3mfMLwJGbtTUDyuOCpYLABC/s1600/image013-746971.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967382660136338" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhguRgU4z__j4IM7ckHi-Kc8X7GBhiRO8LkWB9NCtlcCJEymlYfKKEAVOSnEP101FCLqKmmwOssQfr7gRM6tLs5LIQt7d7svrSUkTkprFrqmcFNNI5v_G53e3mfMLwJGbtTUDyuOCpYLABC/s320/image013-746971.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Okay, we looked around the setup available by default, and now we’ll set up WMDP (Warehouse Mobile Devices Portal) first to work in a web browser on the VM, then to work on the device outside of the VM and finally run WMDP in simulation mode from within New Microsoft Dynamics AX user interface <o:p></o:p></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
<b>Step 1: On the VM<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
First immediate step will be to download WMDP from Warehouse Management > Setup > Mobile device > Download Warehouse Mobile Device Portal. We’ll do it using Internet Explorer (IE) web browser on the VM<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Dynamics AX<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFzkLSZKyF22AZorowuvGc2SoP-6E3zlLnHorPa_Qed5bSlVrBK8xw2SXuwFmpqLA73JoreFdVZuyjsh23TjgN6UKrnjUYSOG-S3Nsj8xDXoBUT-xltzfA14LmNwyBeQFeJCciXRRWQVNn/s1600/image014-747927.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967385963408082" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFzkLSZKyF22AZorowuvGc2SoP-6E3zlLnHorPa_Qed5bSlVrBK8xw2SXuwFmpqLA73JoreFdVZuyjsh23TjgN6UKrnjUYSOG-S3Nsj8xDXoBUT-xltzfA14LmNwyBeQFeJCciXRRWQVNn/s320/image014-747927.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
In order to enable download, we’ll change Internet Explorer web browser settings (Internet options > Security tab > Internet (zone) > Custom level) and enable appropriate radio buttons. Please note that for the purposes of POC in this walkthrough it is fine, in fact security settings of web browser will be managed differently and strictly for Production environments to ensure maximum level of protection <o:p></o:p></div>
<div class="MsoNormal">
When Download Warehouse Mobile Devices Portal installer windows pops it will provide a checklist of security best practices which need to be followed for Production environments. But again for the purposes of POC in this walkthrough we’ll mark all checkboxes to get past this step and begin download<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Download Warehouse Mobile Devices Portal installer<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-ZJOsGkJRd_vTF6sja-hmVh38NQCyUZY0D0hvkAbyvMAIwi3ZGytNRSR1CYFkcP2f6au7qerhS_PSh8YrgmwGqE8N37JxuRfigPYiy8jYWUHSLAvlZqI4OP6pwZsvRTJixCGkK1y1NyWB/s1600/image015-748789.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967388288128146" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-ZJOsGkJRd_vTF6sja-hmVh38NQCyUZY0D0hvkAbyvMAIwi3ZGytNRSR1CYFkcP2f6au7qerhS_PSh8YrgmwGqE8N37JxuRfigPYiy8jYWUHSLAvlZqI4OP6pwZsvRTJixCGkK1y1NyWB/s320/image015-748789.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Once WarehouseMobileDevicesPortal.msi is downloaded we can begin installation process<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>WarehouseMobileDevicesPortal.msi<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8mWX4RZysMWMkfN2OSRElaVKnBC-Wm7Jo9bShcDbo2E-D84BL-H6s0mN_2QRQ3VerwndYw83ac2K2LTlJRvewD3QJYrCUy9Q4wvbaE0VCOxyZECun5wMMmiVaQvlrsK8R7G92IGNLBRAB/s1600/image016-749824.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967393626222162" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8mWX4RZysMWMkfN2OSRElaVKnBC-Wm7Jo9bShcDbo2E-D84BL-H6s0mN_2QRQ3VerwndYw83ac2K2LTlJRvewD3QJYrCUy9Q4wvbaE0VCOxyZECun5wMMmiVaQvlrsK8R7G92IGNLBRAB/s320/image016-749824.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Installation process is very intuitive <o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Microsoft Dynamics AX Warehouse Mobile Devices Portal Setup Wizard - Welcome <o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhITX-gY8zWMhc7N37z4HNnOjxbwdB-lswG3ONUHTZW9Wb_qr10k-eU-BZxdeEcvaUUNSWojeV5QPlPSBVmOuXAxtdPTZ2pH-Yfd9bnwOhRTiX1zR0V-9DM7qXeJSOn7KC9npNjhmZTJUWx/s1600/image017-750806.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967397003052466" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhITX-gY8zWMhc7N37z4HNnOjxbwdB-lswG3ONUHTZW9Wb_qr10k-eU-BZxdeEcvaUUNSWojeV5QPlPSBVmOuXAxtdPTZ2pH-Yfd9bnwOhRTiX1zR0V-9DM7qXeJSOn7KC9npNjhmZTJUWx/s320/image017-750806.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Microsoft Dynamics AX Warehouse Mobile Devices Portal Setup Wizard – Destination Folder<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2LuwtU3aHt8iRQ4ZmFuyryGd4AGmz3683Ww2Ain-IQwXANaImrKPpS3mHkHa_57yH6yq1gSWtexC-hr2LYuXwiwbQbuZfuPSjrXvL2qaWOADikw9b3t-62PNbbQ2JIWrHZK7hFGL-7Tpj/s1600/image018-751739.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967398917051058" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2LuwtU3aHt8iRQ4ZmFuyryGd4AGmz3683Ww2Ain-IQwXANaImrKPpS3mHkHa_57yH6yq1gSWtexC-hr2LYuXwiwbQbuZfuPSjrXvL2qaWOADikw9b3t-62PNbbQ2JIWrHZK7hFGL-7Tpj/s320/image018-751739.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Microsoft Dynamics AX Warehouse Mobile Devices Portal Setup Wizard – IIS configuration<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEjYXMMNf2BL2miVQUIK63E-VDCn19zwOsp4EwuVNlxfdRSyad07ADTr3J95zFU7dKlH_Zq8YgKm-IH5aVNYrKY8XL84F9wAB6eAZCyE5_J0S3aDST0lkjN9o8M_lYJ7-pzg2PCeRwQDUQ/s1600/image019-752567.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967401547820002" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEjYXMMNf2BL2miVQUIK63E-VDCn19zwOsp4EwuVNlxfdRSyad07ADTr3J95zFU7dKlH_Zq8YgKm-IH5aVNYrKY8XL84F9wAB6eAZCyE5_J0S3aDST0lkjN9o8M_lYJ7-pzg2PCeRwQDUQ/s320/image019-752567.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Note: Please note that on this step I specified port 9999 to be used for WDMP IIS Web site deployment<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Microsoft Dynamics AX Warehouse Mobile Devices Portal Setup Wizard – Ready to install<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgapNIxzmFp1tJipKnD81BMy7HtD_Zu-D2AHJG99iRcQdnggzZYweFLclmA1ZyP63EyYl53KUo6HeNsZtBaZOHRJXCEu3n4t6AN3z_tniPQlaYnttosONWSfHL-ZBiPjsp5iNmhkg6Y6je4/s1600/image020-753414.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967407111287122" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgapNIxzmFp1tJipKnD81BMy7HtD_Zu-D2AHJG99iRcQdnggzZYweFLclmA1ZyP63EyYl53KUo6HeNsZtBaZOHRJXCEu3n4t6AN3z_tniPQlaYnttosONWSfHL-ZBiPjsp5iNmhkg6Y6je4/s320/image020-753414.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Microsoft Dynamics AX Warehouse Mobile Devices Portal Setup Wizard - Completed <o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTWTQuPdN3_0SGzFUyhaqT30LgA_7ZTDtYKDLD7YZPjNp8SLC6W1eAaKjytUuBgHYRirkB86mPwXtuzivdeoq-26_Oq6f4a-coVf0CAzqMtmqiBSxfDOXoZMXSl9TsEDGwZ1a_NBHZn4j3/s1600/image021-754200.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967412266277474" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTWTQuPdN3_0SGzFUyhaqT30LgA_7ZTDtYKDLD7YZPjNp8SLC6W1eAaKjytUuBgHYRirkB86mPwXtuzivdeoq-26_Oq6f4a-coVf0CAzqMtmqiBSxfDOXoZMXSl9TsEDGwZ1a_NBHZn4j3/s320/image021-754200.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Once installation of WMDP is completed we can see respective Dynamics AX Warehouse Mobile Devices Portal DEFAULT IIS Web site deployed<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>IIS Manager > WMDP DEFAULT <o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_-kyOsKcTQx0NU5PTaWACxcmAEmkStsBabwwmjl-KgXy24MutmS1h80ya0fjbP0QytPlk8bUYKsia5SdNPSJXb9OSxrwceuxKEBB247ZZMwcHYBZ5tjkilqTqBzyz1J1JcjhHAHwbLIc8/s1600/image022-755182.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967415141098978" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_-kyOsKcTQx0NU5PTaWACxcmAEmkStsBabwwmjl-KgXy24MutmS1h80ya0fjbP0QytPlk8bUYKsia5SdNPSJXb9OSxrwceuxKEBB247ZZMwcHYBZ5tjkilqTqBzyz1J1JcjhHAHwbLIc8/s320/image022-755182.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
We can also review its bindings<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>IIS Manager > WMDP DEFAULT <o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfEj6767921Y-7fO_4Trgr6RLuVUH1pFWJlZOQ6spDbg0h5BQidDLB4SGM-406T5ZLlVjprzn3f1Bz7VPHtTFhotgWgxE3tW6W3VHZ7SYGtIVvu9hyphenhyphenh96jScLz7_yuuanIUfeQdhy_AxkH/s1600/image023-756023.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967417915770274" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfEj6767921Y-7fO_4Trgr6RLuVUH1pFWJlZOQ6spDbg0h5BQidDLB4SGM-406T5ZLlVjprzn3f1Bz7VPHtTFhotgWgxE3tW6W3VHZ7SYGtIVvu9hyphenhyphenh96jScLz7_yuuanIUfeQdhy_AxkH/s320/image023-756023.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>IIS Manager > WMDP DEFAULT > Site Bindings <o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj81XYsxz6EEZQWKVke9BiA8lusXFh_EA8BlzqvEt2nxhm7QioobtEffdznpij-aqhNQmnzZKlPlXNgr_1YP5P7S7_h8FPjN-jNlLWxf0XQNK1aZ70nvibP82HBuDOnAjYsfOvpEekVokuH/s1600/image024-757037.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967423458682930" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj81XYsxz6EEZQWKVke9BiA8lusXFh_EA8BlzqvEt2nxhm7QioobtEffdznpij-aqhNQmnzZKlPlXNgr_1YP5P7S7_h8FPjN-jNlLWxf0XQNK1aZ70nvibP82HBuDOnAjYsfOvpEekVokuH/s320/image024-757037.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Please note that because I specified port 9999 during installation process appropriate binding for port 9999 has been created for HTTPS protocol<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Also WMDP DEFAULT IIS Web site belongs to WMDP DEFAULT IIS Application pool<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>IIS Manager > Application pools<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaukaum3P5SNpl_su-YVHWMm0sMeDiCcoi3CthgNOs7yY7qsSvzLzS5t1BxWTDzRZs5dVy3zoCz2-5F-jk3VRux3wefwwELaGxqpjw1hfzxikEYkYlukHMnY8f8Y0TNzWrHmikyz1VM0Ci/s1600/image025-757864.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967429253431458" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaukaum3P5SNpl_su-YVHWMm0sMeDiCcoi3CthgNOs7yY7qsSvzLzS5t1BxWTDzRZs5dVy3zoCz2-5F-jk3VRux3wefwwELaGxqpjw1hfzxikEYkYlukHMnY8f8Y0TNzWrHmikyz1VM0Ci/s320/image025-757864.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
At this point if we try to access WMDP in a web browser on <a href="https://localhost:9999/"> https://localhost:9999</a> we’ll get an error because WMDP has not been configured yet<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>WMDP <o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3AlottZXW-_dwD4uJdJSJoreKhVqnHvON9BCXCcbeLl4s3Mj60bEl5_TPA6L6BkXIhvvXFBAAKajxYvPkcooMonL6u4r7wogma-uGQAW95yAtbAolw32lo1zVU82e2YtdQ_S_0oAn1Bd1/s1600/image026-758635.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967427020550754" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3AlottZXW-_dwD4uJdJSJoreKhVqnHvON9BCXCcbeLl4s3Mj60bEl5_TPA6L6BkXIhvvXFBAAKajxYvPkcooMonL6u4r7wogma-uGQAW95yAtbAolw32lo1zVU82e2YtdQ_S_0oAn1Bd1/s320/image026-758635.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
For the purposes of experiment, we’ll also add additional HTTP binding on port 9998<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Add Web site Binding (HTTP)<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguDABjAyzrKmRs-FiANU8PKseBnvbs52JO2AEjvHgQGHfmKxsmEB7Ct-nBNEU1XfBGLaR5bt6nDgdXICCFG3mjLFSIEgpj039f4f95cCSnHpuchyaU9DEPWn7cc4ow5p1-AqGMHA3IEgf-/s1600/image027-759494.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967431210400946" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguDABjAyzrKmRs-FiANU8PKseBnvbs52JO2AEjvHgQGHfmKxsmEB7Ct-nBNEU1XfBGLaR5bt6nDgdXICCFG3mjLFSIEgpj039f4f95cCSnHpuchyaU9DEPWn7cc4ow5p1-AqGMHA3IEgf-/s320/image027-759494.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Now WMDP IIS Web site bindings will look like the following<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Site Bindings<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhf8b5Vp2VWWuAOYMFmU29z3dLiywX3XizNbljon-re02AMk_K3O5fOgv5KhTh4jMuhw0C59Xa3LbYY2JTdUEme06UhQB4UrMCpsotQRn4iaDgdXw3CIXFIA31BGlVABWVPUhUHs4cvSyrb/s1600/image028-760307.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967437666760370" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhf8b5Vp2VWWuAOYMFmU29z3dLiywX3XizNbljon-re02AMk_K3O5fOgv5KhTh4jMuhw0C59Xa3LbYY2JTdUEme06UhQB4UrMCpsotQRn4iaDgdXw3CIXFIA31BGlVABWVPUhUHs4cvSyrb/s320/image028-760307.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>IIS Manager > WMDP <o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvv2E74kzMNTdbPButMM3nQyG7DgtRp3DtexX5taaNGsdHyYnx406USVa50699vEUzYDWQZ2rOi97pam6Imrsv8STTnnxvpmTU_G7I6HeyGNYQX5TCuwgFnCRryrjSgCl5GLsa6lWzRLPN/s1600/image029-761113.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967446032089858" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvv2E74kzMNTdbPButMM3nQyG7DgtRp3DtexX5taaNGsdHyYnx406USVa50699vEUzYDWQZ2rOi97pam6Imrsv8STTnnxvpmTU_G7I6HeyGNYQX5TCuwgFnCRryrjSgCl5GLsa6lWzRLPN/s320/image029-761113.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Now we should configure WMDP before we can use it<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
One of the steps in configuration process is to register an app for WDMP. In order to do that we’ll log into Microsoft Azure portal and navigate to Active Directory <o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Active Directory</i> <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIov_tqdB4e53SAw8oLYPvYPcwJRkwxowsnbv3LmX0uTYyGdgOvW4PwFLFAh7xZUGaem0Mwjt1l3slWRT8Wb0lnuzQzFygd-7A2tFWBtO7p1u1bhD2IQZpQAjwIkAN7SyKYTR4oOEBKFHf/s1600/image030-762718.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967451957331698" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIov_tqdB4e53SAw8oLYPvYPcwJRkwxowsnbv3LmX0uTYyGdgOvW4PwFLFAh7xZUGaem0Mwjt1l3slWRT8Wb0lnuzQzFygd-7A2tFWBtO7p1u1bhD2IQZpQAjwIkAN7SyKYTR4oOEBKFHf/s320/image030-762718.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Next we’ll open Add application dialog on Applications tab<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Active Directory > Applications <o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4Cgp1gqmrMLnJJZ5zqkD-KQRJJaUfNO1Jp4P_BjfyzbDazIBFX8stRA9Wc64rV8zE7cQImuoLzxQN5sKM7Y82mGJmSU0-7iN_c04LnlPzUDdhAE7Ffy4W5WLldJ9SJwkfqk4nqZSUiHk9/s1600/image031-763738.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967453922322386" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4Cgp1gqmrMLnJJZ5zqkD-KQRJJaUfNO1Jp4P_BjfyzbDazIBFX8stRA9Wc64rV8zE7cQImuoLzxQN5sKM7Y82mGJmSU0-7iN_c04LnlPzUDdhAE7Ffy4W5WLldJ9SJwkfqk4nqZSUiHk9/s320/image031-763738.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
On Add application dialog we’ll select Native client application<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Add application – Tell us about your application<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiYnOnftrYbDnbdvkNLwsgONHWrs8wCyfZXSaBfCy9_Sa61hbBaRHVcquAdiTMPxdbyKSBXzaAcEZrgUtMKgBf1MYqEHmqlF4ECtRUTe-Z-hg4Blf5WWrC7lDsJC96u3eUmO5BpsU5Igkz/s1600/image032-764586.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967455067244050" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiYnOnftrYbDnbdvkNLwsgONHWrs8wCyfZXSaBfCy9_Sa61hbBaRHVcquAdiTMPxdbyKSBXzaAcEZrgUtMKgBf1MYqEHmqlF4ECtRUTe-Z-hg4Blf5WWrC7lDsJC96u3eUmO5BpsU5Igkz/s320/image032-764586.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
For the purposes of POC in this walkthrough we’ll specify a fake redirect URL<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Add application – Application information<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5ebkHSC86N2l6nL8iX_TEpGlV10-cyO8sEMYXwRMfIAURAY6uuEFG8e8dgKkGAW6uzjIsIHWl5ArtQUAbXal8AcDaPUhD7M22WIsoN4z6Dowlpw7Lb4E6rd3XRm1FS7WXRrS9yN3S5tg9/s1600/image033-765503.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967457563626994" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5ebkHSC86N2l6nL8iX_TEpGlV10-cyO8sEMYXwRMfIAURAY6uuEFG8e8dgKkGAW6uzjIsIHWl5ArtQUAbXal8AcDaPUhD7M22WIsoN4z6Dowlpw7Lb4E6rd3XRm1FS7WXRrS9yN3S5tg9/s320/image033-765503.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Now application has been registered and we’ll navigate to Configure tab to retrieve necessary information and do additional setup<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Application <o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5SMVCbw34lX3QQxxBastvx6G_maRjKp41SsGtyt-C3AzYFZJUdyll3fvYUu3gRcPLK-obhfPhOEKZJKUzxCGB41YXinFKxoT10t6-jsCrqrAYvKhSOcaqZ8qj40SyueeSO2itGy4OT6nn/s1600/image034-766365.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967460917859058" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5SMVCbw34lX3QQxxBastvx6G_maRjKp41SsGtyt-C3AzYFZJUdyll3fvYUu3gRcPLK-obhfPhOEKZJKUzxCGB41YXinFKxoT10t6-jsCrqrAYvKhSOcaqZ8qj40SyueeSO2itGy4OT6nn/s320/image034-766365.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
On Configure tab we’ll take a note of Client ID GUID (which will be required on the subsequent steps) and also assign appropriate permissions for the application <o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Application > Configure<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinfuH4mAGjuDxN7RHi5M3OEB_-VI0yqPd3pUFTZ9Dk8K3vQWXIWAG3UL5Pfxsj7Y0O-Eshw7SG4s6wVgkh_YhuHoM_xCwTiENrAqXXWkGlFuP0SIX2TIyz0AxoNtvaeFNHP8YPoU9CbOuL/s1600/image035-767260.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967467024861842" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinfuH4mAGjuDxN7RHi5M3OEB_-VI0yqPd3pUFTZ9Dk8K3vQWXIWAG3UL5Pfxsj7Y0O-Eshw7SG4s6wVgkh_YhuHoM_xCwTiENrAqXXWkGlFuP0SIX2TIyz0AxoNtvaeFNHP8YPoU9CbOuL/s320/image035-767260.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Specifically, we’ll add Microsoft Dynamics ERP as application <o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Permissions to other applications<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjavIrNc3HNTdZuOoz2s7y1r3A-74G3_P00XvNXv5fjaGwoTiSkl7gLqtUPT_tlMFs08HNwhIpMG0FKkwlEwxwAXmfmTRwl2X8K9bG1_o9vEUB_jQe49RUJbfLfJMjrWN1mtWclwhQkMNZj/s1600/image036-768199.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967470049812770" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjavIrNc3HNTdZuOoz2s7y1r3A-74G3_P00XvNXv5fjaGwoTiSkl7gLqtUPT_tlMFs08HNwhIpMG0FKkwlEwxwAXmfmTRwl2X8K9bG1_o9vEUB_jQe49RUJbfLfJMjrWN1mtWclwhQkMNZj/s320/image036-768199.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
And assign 3 permissions to it as shown below<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Permissions to other applications<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3crtQwaUOZRLRD61GPVaTSwivLOCQEIVJ1pobBAxtvA2vq1iNkiD08nUY22_DNn8aLCIMAgFIeQbFeRUFpEwPubZbMIpfIrM24GPGZbAILLpmZQrP5-RT50_cPARyPCyWAC45RgwfTHeh/s1600/image037-769036.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967477144663378" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3crtQwaUOZRLRD61GPVaTSwivLOCQEIVJ1pobBAxtvA2vq1iNkiD08nUY22_DNn8aLCIMAgFIeQbFeRUFpEwPubZbMIpfIrM24GPGZbAILLpmZQrP5-RT50_cPARyPCyWAC45RgwfTHeh/s320/image037-769036.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Let’s assume Client ID GUID is “XYZ” for simplicity of explanation<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
At this point with all necessary info on-hand we can modify Web.config file for WMDP. We can very quickly get to the file system folder where Web.config for WMDP resides by right clicking WMDP Web Site in IIS Manager and selecting Explore to open file explorer window <o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>IIS Manager > Sites > WMDP > Explore<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgMH-f7kO_Jp4W8zs1Pf512VxZOjyDtQDnZwWhIerWESze5iabvVHwooQPgp7xzN3qRnQgmltvNdmGLCge1dyGWFTyVarGyv3BiG0IOmKPbU6MdYp4O2jspgr08zXS4gkayq78UqLWQsVQ/s1600/image038-769842.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967479339399538" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgMH-f7kO_Jp4W8zs1Pf512VxZOjyDtQDnZwWhIerWESze5iabvVHwooQPgp7xzN3qRnQgmltvNdmGLCge1dyGWFTyVarGyv3BiG0IOmKPbU6MdYp4O2jspgr08zXS4gkayq78UqLWQsVQ/s320/image038-769842.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Here’s Web.config file we need to modify<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>File explorer > Web.config<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiclP3xNMfYTDtAnF0zuKXnzGrR8vAgMu23P95Fs-MTmiL3b3WOJUuJbggZRKKoWGaxnNy56rVIdkiHRhpOlxDJFa9ghHX2jd76S9RdRz763Unt1r3SjqeGx6Y2uAZ5P5LXSjXmF4b6lSQT/s1600/image039-770769.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967484111620946" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiclP3xNMfYTDtAnF0zuKXnzGrR8vAgMu23P95Fs-MTmiL3b3WOJUuJbggZRKKoWGaxnNy56rVIdkiHRhpOlxDJFa9ghHX2jd76S9RdRz763Unt1r3SjqeGx6Y2uAZ5P5LXSjXmF4b6lSQT/s320/image039-770769.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
In Web.config file at minimum we need to provide a few pieces of information required for configuration. They are: Service reference URI, Auth service security resource, Service client ID (GUID we registered and memorized earlier), Service user name, Service user password (for the sake of simplicity for the POC we’ll specify Admin user credentials), Service auth URL. Pretty much everything is very straightforward. Speaking about Service auth URL, for example, if our domain is “microsoft” we’d specify “https://login.windows.net/<span style="background: yellow; mso-highlight: yellow;">microsoft.onmicrosoft.com</span>”, or if our domain is “contosoax7” we’d specify “https://login.windows.net/<span style="background: yellow; mso-highlight: yellow;">contosoax7.onmicrosoft.com</span>”. You can also see this name when you are logging in into Microsoft Azure portal, for example, <a href="https://manage.windowsazure.com/microsoft.onmicrosoft.com#Workspaces/All/dashboard"> https://manage.windowsazure.com/<span style="background: yellow; mso-highlight: yellow;">microsoft.onmicrosoft.com</span>#Workspaces/All/dashboard</a>. So it is easy to locate</div>
<div class="MsoNormal">
<o:p><br /></o:p></div>
<div class="MsoNormal">
This is how modified Web.config file will look like. Please note that I removed PublicKeyToken values from the text below to simplify reading (…)<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Web.config</i></div>
<div class="MsoNormal">
<i><o:p><br /></o:p></i></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none;"> <tbody>
<tr> <td style="border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 467.5pt;" valign="top" width="935"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<?xml version="1.0"?><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<!-- <o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Note: As an alternative to hand editing this file you can use the <o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
web admin tool to configure settings for your application. Use<o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
the Website->Asp.Net Configuration option in Visual Studio.<o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
A full list of settings and comments can be found in <o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
machine.config.comments usually located in <o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
\Windows\Microsoft.Net\Framework\v2.x\Config <o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<configuration><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<configSections><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<sectionGroup name="ServiceConnectionGroup"><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<section name="ServiceConnection"<o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
type="Microsoft.Dynamics.AX.Whs.Web.Configuration.ServiceSettings"<o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
allowLocation="true" <o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
allowDefinition="Everywhere"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<section name="ServiceProtocol"<o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
type="Microsoft.Dynamics.AX.Whs.Web.Configuration.ServiceProtocol"<o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
allowLocation="true"<o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
allowDefinition="Everywhere"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
</sectionGroup><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
</configSections><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: yellow; mso-highlight: yellow;"><ServiceConnectionGroup><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: yellow; mso-highlight: yellow;"> <ServiceConnection><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: yellow; mso-highlight: yellow;"> <ServiceReference<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: yellow; mso-highlight: yellow;"> URI="</span><span style="background: red; mso-highlight: red;">https://alexaos.cloudax.dynamics.com/api/services</span><span style="background: yellow; mso-highlight: yellow;">"<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: yellow; mso-highlight: yellow;"> TimeoutSeconds="600"/><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: yellow; mso-highlight: yellow;"> <Authentication<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: yellow; mso-highlight: yellow;"> ServiceSecurityResource="</span><span style="background: red; mso-highlight: red;">https://alexaos.cloudax.dynamics.com</span><span style="background: yellow; mso-highlight: yellow;">"<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: yellow; mso-highlight: yellow;"> ServiceClientID="</span><span style="background: red; mso-highlight: red;">XYZ</span><span style="background: yellow; mso-highlight: yellow;">"<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: yellow; mso-highlight: yellow;"> ServiceUserName="</span><span style="background: red; mso-highlight: red;">alex@microsoft.com</span><span style="background: yellow; mso-highlight: yellow;">"<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: yellow; mso-highlight: yellow;"> ServiceUserPassword="</span><span style="background: red; mso-highlight: red;">pass@word1</span><span style="background: yellow; mso-highlight: yellow;">"<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: yellow; mso-highlight: yellow;"> ServiceAuthenticationURL="</span><span style="background: red; mso-highlight: red;">https://login.windows.net/microsoft.onmicrosoft.com</span><span style="background: yellow; mso-highlight: yellow;">"/><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: yellow; mso-highlight: yellow;"> </ServiceConnection><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: yellow; mso-highlight: yellow;"> <ServiceProtocol><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: yellow; mso-highlight: yellow;"> <SessionXmlDocument MaxSizeBytes="2500000"/><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: yellow; mso-highlight: yellow;"> <DisplaySettingsXmlDocument MaxSizeBytes="2500000"/><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: yellow; mso-highlight: yellow;"> <CompaniesList MaxSizeBytes="10151"/><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: yellow; mso-highlight: yellow;"> <CultureID MaxSizeBytes="10"/><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: yellow; mso-highlight: yellow;"> </ServiceProtocol><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: yellow; mso-highlight: yellow;"> </ServiceConnectionGroup></span><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<!--<o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
For a description of web.config changes see http://go.microsoft.com/fwlink/?LinkId=235367.<o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
The following attributes can be set on the <httpRuntime> tag.<o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<system.Web><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<httpRuntime targetFramework="4.5" /><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
</system.Web><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<system.web><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<httpCookies httpOnlyCookies="true" requireSSL="true"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<!-- <o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Set compilation debug="true" to insert debugging <o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
symbols into the compiled page. Because this <o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
affects performance, set this value to true only <o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
during development.<o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<compilation debug="false" targetFramework="4.5"><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<assemblies><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=…"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=…"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=…"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=…"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=…"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=…"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
</assemblies><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
</compilation><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<!--<o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
The <authentication> section enables configuration <o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
of the security authentication mode used by <o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
ASP.NET to identify an incoming user. <o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<authentication mode="None"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<!--<o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
The <customErrors> section enables configuration <o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
of what to do if/when an unhandled error occurs <o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
during the execution of a request. Specifically, <o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
it enables developers to configure html error pages <o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
to be displayed in place of a error stack trace.--> <o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<customErrors mode="On" defaultRedirect="~/Error"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<namespaces><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<add namespace="Microsoft.Dynamics.AX.Whs.Web"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<add namespace="System.Web.Mvc"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<add namespace="System.Web.Mvc.Ajax"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<add namespace="System.Web.Mvc.Html"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<add namespace="System.Web.Routing"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<add namespace="System.Linq"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<add namespace="System.Collections.Generic"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<add namespace="System.Xml"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<add namespace="System.Web.Helpers"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<add namespace="System.Web.WebPages"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
</namespaces><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
</pages><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<httpHandlers><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<add verb="*" path="*.mvc" validate="false" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=…"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
</httpHandlers><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<sessionState timeout="600"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<globalization enableClientBasedCulture="true" uiCulture="auto" culture="auto"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
</system.web><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<!-- <o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
The system.webServer section is required for running ASP.NET AJAX under Internet<o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Information Services 7.0. It is not necessary for previous version of IIS.<o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<system.webServer><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<validation validateIntegratedModeConfiguration="false"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<modules runAllManagedModulesForAllRequests="true"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<handlers><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<remove name="MvcHttpHandler"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<remove name="UrlRoutingHandler"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<add name="MvcHttpHandler" preCondition="integratedMode" verb="*" path="*.mvc" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=…"/><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
</handlers><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
</system.webServer><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
</configuration><o:p></o:p></div>
</td> </tr>
</tbody> </table>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Coming back to Bindings they look like the following at this point<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Site Bindings</i></div>
<div class="MsoNormal">
<i><o:p><br /></o:p></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjsNmwrcVb1EHTiVKmYg-DEdXs_6-4BRn97dosn38Vd4SfO_3N7wuqUUBI1iN17xZcr_tMWbHCozmtzi0ROSJH96yv7Mfjo6SgmNe1JjTA9YSPsAvad-yJawaqNBM-H2vrDbfFVQVhvq8T/s1600/image040-771657.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967483468250802" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjsNmwrcVb1EHTiVKmYg-DEdXs_6-4BRn97dosn38Vd4SfO_3N7wuqUUBI1iN17xZcr_tMWbHCozmtzi0ROSJH96yv7Mfjo6SgmNe1JjTA9YSPsAvad-yJawaqNBM-H2vrDbfFVQVhvq8T/s320/image040-771657.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
We’ll also do an additional step in HTTPS Binding configuration by adding a host name (I reused the original AOS host name for the sake of simplicity for the purposes of POC) and SSL certificate (I reused the original AOS SSL certificate for the sake of simplicity for the purposes of POC)<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Edit Site Binding <o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuKJVHuTvJiChntc8p0rMs2pMOJw3g6xXwwl-mQHARLAAgpt5AszrMyFJVKNZMVx3nvp6RTSXx3MvDGgtlnRZeN_wd44QW7UtNIFx9yM9-JTugcXS-vb-CghOiKBlovPbg5cfigUPLFWaD/s1600/image041-772648.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967488051835970" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuKJVHuTvJiChntc8p0rMs2pMOJw3g6xXwwl-mQHARLAAgpt5AszrMyFJVKNZMVx3nvp6RTSXx3MvDGgtlnRZeN_wd44QW7UtNIFx9yM9-JTugcXS-vb-CghOiKBlovPbg5cfigUPLFWaD/s320/image041-772648.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Now WMDP IIS Web site bindings look like the following<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Site Bindings<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbBK08UAPIGMjjLiZGQ_ztIxIa7xXKPRHQGIOvD1sHebVCR4DmZNP6GSHKRa-2dq6FnhpyQ4qXUEQn2FXRe1Bh4y-VLP35VrfzVzRILY5XhKGzdaDTNIHJSnLEoFL-OyVBYttTQnK9wHQZ/s1600/image042-773581.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967491829090418" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbBK08UAPIGMjjLiZGQ_ztIxIa7xXKPRHQGIOvD1sHebVCR4DmZNP6GSHKRa-2dq6FnhpyQ4qXUEQn2FXRe1Bh4y-VLP35VrfzVzRILY5XhKGzdaDTNIHJSnLEoFL-OyVBYttTQnK9wHQZ/s320/image042-773581.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
At this point if we access the following URL: <a href="https://alexaos.cloudax.dynamics.com:9999/"> https://alexaos.cloudax.dynamics.com:9999/</a> we can proceed with configuration of WMDP<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Microsoft Dynamics AX Warehouse Mobile Device Portal<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU9XlcnIOQpw6WlqcRm2MS2wy-x94xoKCytSVDQC0P4NrFKCgIKPknCWFdWXO4VaoitaV-Mw6DZJyKaJV-LlpliSZARxrj5Rm_NYTUTVyQdmQLrP7KSVi-1txjE-YitVWUjZsPxejMbWDN/s1600/image043-774430.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967499083319746" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU9XlcnIOQpw6WlqcRm2MS2wy-x94xoKCytSVDQC0P4NrFKCgIKPknCWFdWXO4VaoitaV-Mw6DZJyKaJV-LlpliSZARxrj5Rm_NYTUTVyQdmQLrP7KSVi-1txjE-YitVWUjZsPxejMbWDN/s320/image043-774430.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Our next step will be to load web application configuration according to modified Web.config file. For these purposes we’ll select “Load web application configuration” link<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Web configuration loading<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd9HxELRNK2bfmKlinvYRvrZCqLd22J64R8md6_sVUU_hKVps2h_prXrjiPLzHjBCU6vctuXRpzuWYP2g1lH_UAdcaFexovwSon39G4KpTeoGJ7e7p223g9ehkiTDjmCgs5V54YHo7CSjY/s1600/image044-775378.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967503065681698" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd9HxELRNK2bfmKlinvYRvrZCqLd22J64R8md6_sVUU_hKVps2h_prXrjiPLzHjBCU6vctuXRpzuWYP2g1lH_UAdcaFexovwSon39G4KpTeoGJ7e7p223g9ehkiTDjmCgs5V54YHo7CSjY/s320/image044-775378.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
As the result we’ll see the following message: “Web configuration was loaded successfully. If there are any service user credentials stored in Web.config file, they should be removed now. Please set ServiceUserName and ServiceUserPassword to empty string.”. As suggested now it will be a good time to remove Admin credentials we used from Web.config file<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Then we’ll reload WMDP and select “Log on to the mobile device” to select company in case of multi-company setup<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Select company <o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDg0md__u8oVb1Tsgso35hRIdE0bNrPAuMXisjphKRMYpM23In9EGkLFUYs4PHqwaBdV4AM31igR9UZLsNrKAmdPCXF8uySFGlvD3mnL4xyFnmPwjRMJ6Toy7UiHnIoda80MkY06JSY1sV/s1600/image045-776226.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967506917782450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDg0md__u8oVb1Tsgso35hRIdE0bNrPAuMXisjphKRMYpM23In9EGkLFUYs4PHqwaBdV4AM31igR9UZLsNrKAmdPCXF8uySFGlvD3mnL4xyFnmPwjRMJ6Toy7UiHnIoda80MkY06JSY1sV/s320/image045-776226.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
For the sake of this walkthrough we’re using a standard demo data set and we’ll select USMF company that has enough data pre-set up for us to continue<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Sign in to AX (USMF)<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRzXS_kRy5iF9FDLD838kI8Bqr0ogZ9izKFXn-aVoIeDK_gAc1PTwsXvrJj4qqShL-sgQQCGjWW5KkWDgmcsUn0bXQi5jxLkAWicSntPCBbcLvRLrpL-w-ZjbI6tAAf3JsM8tKLre1ZmZu/s1600/image046-777060.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967508832808786" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRzXS_kRy5iF9FDLD838kI8Bqr0ogZ9izKFXn-aVoIeDK_gAc1PTwsXvrJj4qqShL-sgQQCGjWW5KkWDgmcsUn0bXQi5jxLkAWicSntPCBbcLvRLrpL-w-ZjbI6tAAf3JsM8tKLre1ZmZu/s320/image046-777060.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
On Sign in to AX screen we’ll provide valid Warehouse user credentials and then we can continue with our functional scenarios. This is great! But I’m curious if for the purposes of POC we can run WMDP via HTTP instead of HTTPS. That’s why I’ll repeat the process using HTTP URL <o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Log on to the mobile device (HTTP)<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiC3Gfgl1dTSz9NflcU_TUfWBQf_EHN_qNHdLych6c8LH10TC0ZfPj9Sb_k69Fy2ksBIhi2Wu1CiNJz1-iKQzam1zL-vdUfxk4-oKc7P4KBDbvoO6CjwcFnIC8wucwsw9Jnm7LXSYT91Ja9/s1600/image047-777834.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967515501509282" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiC3Gfgl1dTSz9NflcU_TUfWBQf_EHN_qNHdLych6c8LH10TC0ZfPj9Sb_k69Fy2ksBIhi2Wu1CiNJz1-iKQzam1zL-vdUfxk4-oKc7P4KBDbvoO6CjwcFnIC8wucwsw9Jnm7LXSYT91Ja9/s320/image047-777834.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Select company (HTTP)<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3kGQw2Fzl2NqqEbL9rv_Z8qcrWRXSbrC13SwRG8oGLjqTXqKni-DzIEcUe1ZHXs8IfUNdSl0f3cbCjllnSNyPF1TwfR-081OU2FaehQT5f9yr4yTbfYujnHacM31PdCmaFxkc823jblEK/s1600/image048-778773.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967519465550706" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3kGQw2Fzl2NqqEbL9rv_Z8qcrWRXSbrC13SwRG8oGLjqTXqKni-DzIEcUe1ZHXs8IfUNdSl0f3cbCjllnSNyPF1TwfR-081OU2FaehQT5f9yr4yTbfYujnHacM31PdCmaFxkc823jblEK/s320/image048-778773.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
As the result I’ll be getting the following error: “Sorry, an error occurred while processing your request. Please retry your request or contact your system administrator” <o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Microsoft Dynamics AX Warehouse Mobile Devices Portal: Error<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8SSgZ69puro8qgdx-E01XnOLgBP8H6n3-PldxEnDzYYrOhw0m1h056FBg6EQihi-B7LGu68TXKSWXpb_EJV158EdebdSJMDdvZmpDarxpG7PoG9BbVWbhzCgeoeOy-yVKQTEE7DJQi18i/s1600/image049-779711.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967519843219058" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8SSgZ69puro8qgdx-E01XnOLgBP8H6n3-PldxEnDzYYrOhw0m1h056FBg6EQihi-B7LGu68TXKSWXpb_EJV158EdebdSJMDdvZmpDarxpG7PoG9BbVWbhzCgeoeOy-yVKQTEE7DJQi18i/s320/image049-779711.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
If we look into Event Viewer we’ll find an explanation for this error: “Exception type: HttpAntiForgeryException, Exception message: A required anti-forgery token was not supplied or was invalid” <o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Event Viewer<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFKrOUxVwx_Yx6x8ulKZrd5Gvn_NOe7GvdUCYiw2cEdd6hrHcJWhDAWg1x6k6ArApwPnfiwBSYDgey0qEmcuHHQ-8BhYQD97Pk0nU2EFZNrB9Qr3BhHSWU673NvlcafvW24aEq4AQR_VY7/s1600/image050-780587.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967525109210882" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFKrOUxVwx_Yx6x8ulKZrd5Gvn_NOe7GvdUCYiw2cEdd6hrHcJWhDAWg1x6k6ArApwPnfiwBSYDgey0qEmcuHHQ-8BhYQD97Pk0nU2EFZNrB9Qr3BhHSWU673NvlcafvW24aEq4AQR_VY7/s320/image050-780587.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Exception<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none;"> <tbody>
<tr> <td style="border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 467.5pt;" valign="top" width="935"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="font-family: "segoe ui" , sans-serif; font-size: 9.0pt;">Exception information: <o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="font-family: "segoe ui" , sans-serif; font-size: 9.0pt;"> Exception type: HttpAntiForgeryException <o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="font-family: "segoe ui" , sans-serif; font-size: 9.0pt;"> <span style="background: yellow; mso-highlight: yellow;">Exception message: A required anti-forgery token was not supplied or was invalid.</span><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="font-family: "segoe ui" , sans-serif; font-size: 9.0pt;"> at System.Web.Helpers.AntiForgeryWorker.Validate(HttpContextBase context, String salt)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="font-family: "segoe ui" , sans-serif; font-size: 9.0pt;"> at System.Web.Helpers.AntiForgery.Validate(HttpContextBase httpContext, String salt)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="font-family: "segoe ui" , sans-serif; font-size: 9.0pt;"> at System.Web.Mvc.ValidateAntiForgeryTokenAttribute.OnAuthorization(AuthorizationContext filterContext)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="font-family: "segoe ui" , sans-serif; font-size: 9.0pt;"> at System.Web.Mvc.ControllerActionInvoker.InvokeAuthorizationFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="font-family: "segoe ui" , sans-serif; font-size: 9.0pt;"> at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="font-family: "segoe ui" , sans-serif; font-size: 9.0pt;"> at System.Web.Mvc.Controller.ExecuteCore()<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="font-family: "segoe ui" , sans-serif; font-size: 9.0pt;"> at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="font-family: "segoe ui" , sans-serif; font-size: 9.0pt;"> at System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="font-family: "segoe ui" , sans-serif; font-size: 9.0pt;"> at System.Web.Mvc.MvcHandler.<>c__DisplayClass6.<>c__DisplayClassb.<BeginProcessRequest>b__5()<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="font-family: "segoe ui" , sans-serif; font-size: 9.0pt;"> at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass1.<MakeVoidDelegate>b__0()<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="font-family: "segoe ui" , sans-serif; font-size: 9.0pt;"> at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="font-family: "segoe ui" , sans-serif; font-size: 9.0pt;"> at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="font-family: "segoe ui" , sans-serif; font-size: 9.0pt;"> at System.Web.Mvc.MvcHandler.<>c__DisplayClasse.<EndProcessRequest>b__d()<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="font-family: "segoe ui" , sans-serif; font-size: 9.0pt;"> at System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="font-family: "segoe ui" , sans-serif; font-size: 9.0pt;"> at System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="font-family: "segoe ui" , sans-serif; font-size: 9.0pt;"> at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="font-family: "segoe ui" , sans-serif; font-size: 9.0pt;"> at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="font-family: "segoe ui" , sans-serif; font-size: 9.0pt;"> at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="font-family: "segoe ui" , sans-serif; font-size: 9.0pt;"> at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)</span><o:p></o:p></div>
</td> </tr>
</tbody> </table>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
WMDP is meant to be run via HTTPS, and we’ll switch to HTTPS for further steps<o:p></o:p></div>
<div class="MsoNormal">
Great! We can run WMDP via HTTPS, but for convenience if inside of the VM we can introduce a dedicated host name for it, for example, “alexwmdp.cloudax.dynamics.com”. In order to do that we can change Hosts file </div>
<div class="MsoNormal">
<o:p><br /></o:p></div>
<div class="MsoNormal">
<i>Hosts file<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyp5HxUHTdZB36oXe-wauwFaIuaDu5vIusWv85DuR2_df4sKS6-hyydX_y53Ao03QxKSdc_IItreqq_dLCIdICUEqkluX8-cf8HpQau_DVUEvZY_f5vkZvbl370Gh-TBo9gkygAyVErANS/s1600/image051-781476.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967529200594098" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyp5HxUHTdZB36oXe-wauwFaIuaDu5vIusWv85DuR2_df4sKS6-hyydX_y53Ao03QxKSdc_IItreqq_dLCIdICUEqkluX8-cf8HpQau_DVUEvZY_f5vkZvbl370Gh-TBo9gkygAyVErANS/s320/image051-781476.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
And modify binding appropriately<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Binding (Change)<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuOGKQP2x62KmqkihyphenhyphenuBwJzgPkOB_X_uaygXsYchX_gpXCXT-hlzCjO-tU5iBxWQycFwVdcPhGq9GT7V17GBLzEpMlR6v2F6Zv0_wo1EolWbAkPTBeybaZuG3yLA2SqGvT33J2J0KPjML-/s1600/image052-782348.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967532647651378" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuOGKQP2x62KmqkihyphenhyphenuBwJzgPkOB_X_uaygXsYchX_gpXCXT-hlzCjO-tU5iBxWQycFwVdcPhGq9GT7V17GBLzEpMlR6v2F6Zv0_wo1EolWbAkPTBeybaZuG3yLA2SqGvT33J2J0KPjML-/s320/image052-782348.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Site Bindings<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFPqua3tSma_BD_Yj245Yu_d91gFpFJ-t3DV2QCiTdX_cb6JH1m_dnZVFoYUcB0WxZHDfFeDX3cpj6JTdMxLhQv0h2WAjxOiq4LbheFXcrS8LtWLCevEvK5tBUNf3__2hkxI4nrxsVumkN/s1600/image053-783226.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967535269902194" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFPqua3tSma_BD_Yj245Yu_d91gFpFJ-t3DV2QCiTdX_cb6JH1m_dnZVFoYUcB0WxZHDfFeDX3cpj6JTdMxLhQv0h2WAjxOiq4LbheFXcrS8LtWLCevEvK5tBUNf3__2hkxI4nrxsVumkN/s320/image053-783226.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Now the same WMDP Web site is accessible via a new URL from within the VM thanks for translation introduced in Hosts file<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Microsoft Dynamics AX Warehouse Mobile Devices Portal<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDm1MWzab8m7Toy6imcQkYBMkfraatlr7PFw89snI2lsxHjBtwlzxlmsV7CodO0Tbxcp057e-NPQStX-kO9_Eodp7h_ZuUZUE69zVwsqANIh53GBZGTfgK1jmGrFGKJ9QOaRB8oNDXk1eR/s1600/image054-784094.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967539614180834" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDm1MWzab8m7Toy6imcQkYBMkfraatlr7PFw89snI2lsxHjBtwlzxlmsV7CodO0Tbxcp057e-NPQStX-kO9_Eodp7h_ZuUZUE69zVwsqANIh53GBZGTfgK1jmGrFGKJ9QOaRB8oNDXk1eR/s320/image054-784094.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Select company<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvXgKhha_lOUyhlC3zzj9ae3IntGPrGKD4gvtsok3jci_p00gILHGI-RKq87lL-wk45nYY2Ev4pR7bejat_gbnxupP0d0iyE4ykByWXT9CKXnLqcXBsaDfsbfdHtZHuF86ro_rpILSz7Ft/s1600/image055-784901.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967545535769026" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvXgKhha_lOUyhlC3zzj9ae3IntGPrGKD4gvtsok3jci_p00gILHGI-RKq87lL-wk45nYY2Ev4pR7bejat_gbnxupP0d0iyE4ykByWXT9CKXnLqcXBsaDfsbfdHtZHuF86ro_rpILSz7Ft/s320/image055-784901.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Sign in to AX (USMF) <o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh75DHBAL8nwDmwvnOfZ6hcCJJYh2qq3W7C2IDI1j1dVgrPwA_hV4Y8DHXRhb9EGIv1xig4a63o2tJzTrUGfp7wMp3ya6hjpXf9E5DVow_JZm2GafcAHRUTkvZ7a6cfJkvlR6V15h6R7gQu/s1600/image056-785798.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967550296604626" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh75DHBAL8nwDmwvnOfZ6hcCJJYh2qq3W7C2IDI1j1dVgrPwA_hV4Y8DHXRhb9EGIv1xig4a63o2tJzTrUGfp7wMp3ya6hjpXf9E5DVow_JZm2GafcAHRUTkvZ7a6cfJkvlR6V15h6R7gQu/s320/image056-785798.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
It is more convenient to use a meaningful name like “alexwmdp”, in fact if we want to access alexwmdp.cloudax.dynamics.com from outside of the VM this name will obviously not be resolved<o:p></o:p></div>
<div class="MsoNormal">
So for the next step we’ll expose WMDP via internet. <b><span style="color: red;">Again this will get us going quickly for the purposes of POC, in fact please do not use this configuration for Production purposes and follow the official guidance here instead:</span></b> <b><a href="https://ax.help.dynamics.com/en/wiki/warehouse-mobile-devices-portal-for-microsoft-dynamics-ax/">https://ax.help.dynamics.com/en/wiki/warehouse-mobile-devices-portal-for-microsoft-dynamics-ax/</a></b> </div>
<div class="MsoNormal">
<o:p><br /></o:p></div>
<div class="MsoNormal">
<b>Step 2: On Internet<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
On Microsoft Azure Portal we can find a Public Virtual IP (VIP) address of the VM as shown below<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Public Virtual IP (VIP) address<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpQXbo9hUePbVPyLMPv8Vp_4V1NnDTqMqeu-iG1Y71d_rw8ikBYS1lGklMj51ayAbyki_Sul9IZ_CZCNaHa3cY9OhHctWUuvY7_06Q7QIWBLZmgGEz6zPjzlR8INlp0RrLdkPcFsCyIefu/s1600/image057-786788.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967554432959650" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpQXbo9hUePbVPyLMPv8Vp_4V1NnDTqMqeu-iG1Y71d_rw8ikBYS1lGklMj51ayAbyki_Sul9IZ_CZCNaHa3cY9OhHctWUuvY7_06Q7QIWBLZmgGEz6zPjzlR8INlp0RrLdkPcFsCyIefu/s320/image057-786788.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Thus technically to access <a href="https://alexwmdp.cloudax.dynamics.com:9999/"> https://alexwmdp.cloudax.dynamics.com:9999</a> we can use IP address instead: <a href="https://2x.10x.19x.22x:9999/"> https://2X.10X.19X.22X:9999/</a>. This will not bear a fruit for us yet because custom 9999 port is not exposed, instead standard 443 port is exposed for HTTPS <o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Can’t reach this page<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinn3oBcyoTqSWy4zPU3_QojC01FhKcpBGYzP0Cpi0MiEpSb-mgIxxAOU9Xta9yEJqauRtW6Bo3M4RXhK97De3OElaB0aAdJsVOaQY9H-qxsyya0irMUSM3Pub-QUNYgFvRW7q9xfL9dare/s1600/image058-787640.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967556657019762" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinn3oBcyoTqSWy4zPU3_QojC01FhKcpBGYzP0Cpi0MiEpSb-mgIxxAOU9Xta9yEJqauRtW6Bo3M4RXhK97De3OElaB0aAdJsVOaQY9H-qxsyya0irMUSM3Pub-QUNYgFvRW7q9xfL9dare/s320/image058-787640.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
In fact we can make the setup even more convenient and reusable if we will be using standard 443 port for HTTPS and register a custom domain name for WMDP. This is exactly what we’re going to do next<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Let’s say we want WMDP to be accessible via the following URL: <a href="https://demo.alexwmdp.com/">https://demo.alexwmdp.com</a> <o:p></o:p></div>
<div class="MsoNormal">
In order to achieve that we’ll change WMDP Web site binding as shown below<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>WMDP Web site<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvVfenDFY6lhR2pR2vKUDGQ6lLJEsqcmUBfNTgrHrjttlnXMQtqyBS5QpC6NomMQTYhDgzV_IPCsQkqrvougHH0528TrwtDtcBqrfpA4ZQsz1CH2efmfonoinK5z9xP2G2pYncGWdy1SHU/s1600/image059-788680.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967559194367282" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvVfenDFY6lhR2pR2vKUDGQ6lLJEsqcmUBfNTgrHrjttlnXMQtqyBS5QpC6NomMQTYhDgzV_IPCsQkqrvougHH0528TrwtDtcBqrfpA4ZQsz1CH2efmfonoinK5z9xP2G2pYncGWdy1SHU/s320/image059-788680.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Site Bindings<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKzRdDnJUkCp4TgIWbq7JnExO_TZBWrS6ywmEqs1CSKOz8wUhABRUIw2hjeBYAq_BEc2XPF4p34Y6Bl8Cet-fFC215Gu2r6nr8hU2MA6jhKFco5bbSd4cXSdrtKwPhIYRKQ1aaTHpZ_NDG/s1600/image060-789580.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967560126362610" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKzRdDnJUkCp4TgIWbq7JnExO_TZBWrS6ywmEqs1CSKOz8wUhABRUIw2hjeBYAq_BEc2XPF4p34Y6Bl8Cet-fFC215Gu2r6nr8hU2MA6jhKFco5bbSd4cXSdrtKwPhIYRKQ1aaTHpZ_NDG/s320/image060-789580.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Edit Site Binding<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglfIe3gpCNIxCDD1nAzemjwk1HJOhroNTp-UlCeGKHQDNjk6HETMUv35RyFgaIvoIzWnmEywhAni8C_mvGoIDuTJvoCK35JnqISVIm60bWyw2aswUrIlAvxzTKQDun61kc3NwMioc_6muL/s1600/image061-790540.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967566001090306" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglfIe3gpCNIxCDD1nAzemjwk1HJOhroNTp-UlCeGKHQDNjk6HETMUv35RyFgaIvoIzWnmEywhAni8C_mvGoIDuTJvoCK35JnqISVIm60bWyw2aswUrIlAvxzTKQDun61kc3NwMioc_6muL/s320/image061-790540.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Please note that I’m still reusing the original SSL certificate which is going to give us Certificate warning in the future because this certificate is registered for a different domain name. In fact this will be fine for the purposes of this POC<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
In order to register a new domain name we’ll use one of domain registrars, in my case I already have Blogger web page open so I used Google domain registrar: <a href="https://domains.google.com/">https://domains.google.com</a> to register alexwmdp.com domain that I’m going to use for WMDP<i><o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Domain</i><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNsH2EKkc58qwI0mW_HgVOQyZG2o2OVKvJJaW6JLRPFT9YCx58D6TLB_9fi06y9hESdQFMghQfjkPAVrM7vp9Q1eo_BjWBP-PHP4LeePb5QyHTycG0uvSfkoIBNEvuoRTIsTCUSmENok_2/s1600/image062-791440.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967569268688754" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNsH2EKkc58qwI0mW_HgVOQyZG2o2OVKvJJaW6JLRPFT9YCx58D6TLB_9fi06y9hESdQFMghQfjkPAVrM7vp9Q1eo_BjWBP-PHP4LeePb5QyHTycG0uvSfkoIBNEvuoRTIsTCUSmENok_2/s320/image062-791440.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Please note that domain registrars will charge you a periodic fee for keeping your domain name after registration (fee amount may vary depending on domain registrar). Once domain name has been picked we can set up DNS records for subdomains. In particular, I wanted to use <a href="https://demo.alexwmdp.com/">https://demo.alexwmdp.com</a> to access WMDP. That’s why I’ll introduce appropriate A and CNAME DNS records to map to the VM where WMDP is installed. Please find detailed information about how to register A and CNAME DNS records for custom domain names for Microsoft Azure Cloud Services here: <a href="https://azure.microsoft.com/en-us/documentation/articles/cloud-services-custom-domain-name/"> https://azure.microsoft.com/en-us/documentation/articles/cloud-services-custom-domain-name/</a></div>
<div class="MsoNormal">
<o:p><br /></o:p></div>
<div class="MsoNormal">
This is how resulting DNS records will look like<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Domain - DNS<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXbnEjYSSVeQ54iEoL_2ZHCVdJgr6Eux93znzihpl_eD_PH8ktZmIgdsAT3La7Ox1KHojd5rbNaXZ8N9Jvm6jBYNkESpq0EkoquVw3Lri-4RYEIGA6XJdGtXSfTDPNIO7Zl7FCe2gSXrVE/s1600/image063-792310.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967576491926418" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXbnEjYSSVeQ54iEoL_2ZHCVdJgr6Eux93znzihpl_eD_PH8ktZmIgdsAT3La7Ox1KHojd5rbNaXZ8N9Jvm6jBYNkESpq0EkoquVw3Lri-4RYEIGA6XJdGtXSfTDPNIO7Zl7FCe2gSXrVE/s320/image063-792310.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
This is good, in fact for even greater convenience you can keep your DNS records configurations in one place with New Microsoft Dynamics AX environment – specifically, in Microsoft Azure Portal. In order to do that we can leverage DNS Zones functionality in Microsoft Azure. Please find more info about DNS Zones here: <a href="https://azure.microsoft.com/en-us/documentation/articles/dns-getstarted-create-dnszone/"> https://azure.microsoft.com/en-us/documentation/articles/dns-getstarted-create-dnszone/</a> <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
And we’ll surely do so! On Microsoft Azure Portal we’ll create DNS Zone for alexwmdp.com <o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>DNS Zone<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9D1jiwLsDpUbAnxGdTwb5vbJ3DE7gDEa2Ek459nWAutCTcxjbnfbKu0cXw_YRFJGDBRsDqa05kwD3Cyk6i35I8jb7yjKVcD2ZKNJKnIMOyPDnqWKGyLIkNHD4AWxR4o3TIEP00DgCbEiF/s1600/image064-793236.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967579854726034" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9D1jiwLsDpUbAnxGdTwb5vbJ3DE7gDEa2Ek459nWAutCTcxjbnfbKu0cXw_YRFJGDBRsDqa05kwD3Cyk6i35I8jb7yjKVcD2ZKNJKnIMOyPDnqWKGyLIkNHD4AWxR4o3TIEP00DgCbEiF/s320/image064-793236.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
And then introduce appropriate A and CNAME records for alexwmdp.com domain as shown below<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Record set properties (A) <o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEho9OieJSJCYm6bRmPIKYF3ELzgUJAIuSyWa8y-o-vO1EOBJQq_qcqsDSMt38eK8_CwasYxaYvQHx3yuV1HW0HdfUXgjstegbyG-WocqRcmWJhVJTExod1Ya1iKu_nyOpLkPW1Mdo7eAdEl/s1600/image065-794156.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967582879321890" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEho9OieJSJCYm6bRmPIKYF3ELzgUJAIuSyWa8y-o-vO1EOBJQq_qcqsDSMt38eK8_CwasYxaYvQHx3yuV1HW0HdfUXgjstegbyG-WocqRcmWJhVJTExod1Ya1iKu_nyOpLkPW1Mdo7eAdEl/s320/image065-794156.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Record set properties (CNAME) <o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRqCAG53GdTR4HZTn7y0wJKiwNiXurwnvs9Cm4sPUFoQvNJyXeSd3A3tWt36_JpezZt_vtGCEPMXOrJwvdBlzq36xvu5A1Jj_ZlzyDgBDrbMzWJgWa-PkLNBYd9LQv8EYzRRHad1X6NPry/s1600/image066-795084.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967587871740098" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRqCAG53GdTR4HZTn7y0wJKiwNiXurwnvs9Cm4sPUFoQvNJyXeSd3A3tWt36_JpezZt_vtGCEPMXOrJwvdBlzq36xvu5A1Jj_ZlzyDgBDrbMzWJgWa-PkLNBYd9LQv8EYzRRHad1X6NPry/s320/image066-795084.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Once set up the result will be the same. To make sure everything works great in addition to DNS record for demo.alexwmdp.com I actually created DNS record for handheld.alexwmdp.com in DNS zones via Microsoft Azure portal. Both URL’s would point to one place now: <a href="https://demo.alexaniwmdp.com/">https://demo.alexaniwmdp.com/</a> , <a href="https://handheld.alexaniwmdp.com/">https://handheld.alexaniwmdp.com/</a> <o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Cmd – ping<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkosKkEwlL4ShchxPL4iBPcopXpXI9JWbZJRArgU3eZnCShePis2-nSp0BOvG8zyk-sJewvNgh2o8FhDNJPA1uMg1eljHDLEFA3YdsxY9nzCPp3dff80is2SdvQwyJcflQ_3gFs1SCYzBc/s1600/image067-795945.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967591461203586" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkosKkEwlL4ShchxPL4iBPcopXpXI9JWbZJRArgU3eZnCShePis2-nSp0BOvG8zyk-sJewvNgh2o8FhDNJPA1uMg1eljHDLEFA3YdsxY9nzCPp3dff80is2SdvQwyJcflQ_3gFs1SCYzBc/s320/image067-795945.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Now we can verify the result by navigating to <a href="https://demo.alexwmdp.com/"> https://demo.alexwmdp.com</a><o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Microsoft Dynamics AX Warehouse Mobile Devices Portal</i> <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMFOW4NUwbCrIzDlRu2e0C6ebA4GQv3nXZU-ANNqT8uY7mgdg6KvmK0tBkGQrsQUpCzDp7_pxgA15a9Vthv-Arb3tta7z7Zmw1O5zlEVQvOkidujPcjZt22-zyBi88sD5rrWQXVCGzAdwA/s1600/image068-796834.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967594135769986" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMFOW4NUwbCrIzDlRu2e0C6ebA4GQv3nXZU-ANNqT8uY7mgdg6KvmK0tBkGQrsQUpCzDp7_pxgA15a9Vthv-Arb3tta7z7Zmw1O5zlEVQvOkidujPcjZt22-zyBi88sD5rrWQXVCGzAdwA/s320/image068-796834.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Then we’ll select ”Log on to the mobile device” and select the company<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Selection of company<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjg45y8W0g2HwGS6jqEJd5L6c_fR_UyLWS-DBggv7Qm6JZa0lplXZmmDGMcN82zQy9KPCnvGFRsrJ4XnuFEuyhK4GSj9_9hFUo1UBvpMU4dc4P7xUX0Hfn0rO5J-K5NjsDlBt3UoyEx4_vZ/s1600/image069-797698.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967600836446626" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjg45y8W0g2HwGS6jqEJd5L6c_fR_UyLWS-DBggv7Qm6JZa0lplXZmmDGMcN82zQy9KPCnvGFRsrJ4XnuFEuyhK4GSj9_9hFUo1UBvpMU4dc4P7xUX0Hfn0rO5J-K5NjsDlBt3UoyEx4_vZ/s320/image069-797698.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Finally, when company is selected we can sign in to AX<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Sign in to AX (USMF)<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipvx8RVYbB6jSwcHzebniT4G1NfizfxIdEZ_RpKFvmKPj3lJYp1aVwbfwKAwegv71-fiXRmD5_1l4bt2oRgaMB6po7NbacHJKAOjdBlFtNaf-cmcBSb-k0EkrpTR70rAv6YRf9rs1Y7-62/s1600/image070-798951.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967606452545890" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipvx8RVYbB6jSwcHzebniT4G1NfizfxIdEZ_RpKFvmKPj3lJYp1aVwbfwKAwegv71-fiXRmD5_1l4bt2oRgaMB6po7NbacHJKAOjdBlFtNaf-cmcBSb-k0EkrpTR70rAv6YRf9rs1Y7-62/s320/image070-798951.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Please note that you can now access WMDP from outside of the VM in a web browser via Internet. </div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Please also note that because I reused originally installed SSL certificate we will get Certificate warning when opening this URL which you can bypass and proceed with URL. To get rid of Certificate warning we can create a dedicated SSL Certificate registered for the custom domain name we introduced <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
At this point we can also conveniently access WMDP from the telephone using web browser. For example, this is how WMDP looks like on my Windows Phone<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Phone - Microsoft Dynamics AX Warehouse Mobile Devices Portal <o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiOyKcNpSqPczmCWN6AAnMav66ldUplDhc0QWPzpPbj00EW828GkI5I5H7TB86B5M-69GJ_x73xLODUOhSEWWswKYLqJM1BoawVENbEVZ7Ypb0woZRVGOVCOermOpbt9UGqcsLU3XDPTvk/s1600/image071-799786.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967607458850002" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiOyKcNpSqPczmCWN6AAnMav66ldUplDhc0QWPzpPbj00EW828GkI5I5H7TB86B5M-69GJ_x73xLODUOhSEWWswKYLqJM1BoawVENbEVZ7Ypb0woZRVGOVCOermOpbt9UGqcsLU3XDPTvk/s320/image071-799786.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Phone – Select company<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpYmZzWSMYsBcvjpChdNB1UCRjSQl7SQeqBPvu93XlZDqABFLgZC-OL7Z4GUbdOZfZX7dqRmiGrnYq4HidWahARhqol2Z3iNNOO4kxAh57jFnHs5c1szeT9qKlcyaedT0gDHfIf2OIMEwM/s1600/image072-700918.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967612810334098" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpYmZzWSMYsBcvjpChdNB1UCRjSQl7SQeqBPvu93XlZDqABFLgZC-OL7Z4GUbdOZfZX7dqRmiGrnYq4HidWahARhqol2Z3iNNOO4kxAh57jFnHs5c1szeT9qKlcyaedT0gDHfIf2OIMEwM/s320/image072-700918.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Phone – Sign in to AX<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpO2rZkoGCfqskSKsNyL8cJUlwPlWs3xXZbO1Aw4V1S5Co6EBLFtsOg14JUWW15LBMJR93JLY154CH0K4kZnwOXdx75BR1JK6ASMS-acv5jHKjcJhPeOT_NK31zaQbbRoCsiuNMsWdsa_o/s1600/image073-701889.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967615970337522" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpO2rZkoGCfqskSKsNyL8cJUlwPlWs3xXZbO1Aw4V1S5Co6EBLFtsOg14JUWW15LBMJR93JLY154CH0K4kZnwOXdx75BR1JK6ASMS-acv5jHKjcJhPeOT_NK31zaQbbRoCsiuNMsWdsa_o/s320/image073-701889.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
This is all great! But if for the purposes of your POC, demonstration or workshop you prefer to use WMDP simulator inside of New Microsoft Dynamics AX instead of full-fledged deployed WMDP, it is also a possibility. Let’s see how it works<o:p></o:p></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
<b>Step 3: AX Simulation (Dynamics AX 2012 R3 and New Dynamics AX)<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
We are all familiar with WMDP simulator in Microsoft Dynamics AX 2012 R3<o:p></o:p></div>
<div class="MsoNormal">
The simulation mode was accessible via WHSWorkExecute form and WHSWorkExecute action menu item<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>WHSWorkExecute menu item<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLE8pZr3AzNWc6n-PCvb92I-FWYWBIFerNXXKIhMmFONZS5PMHR0vvptlFixUuX9vJiSlXllSCTGCHDx6vTXSUcafGe_0ZXUfVRyTSrB4FNlPUMp32TO5GEjlhba4UJ0fzv0AO4uojGDWC/s1600/image074-702850.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967623141886706" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLE8pZr3AzNWc6n-PCvb92I-FWYWBIFerNXXKIhMmFONZS5PMHR0vvptlFixUuX9vJiSlXllSCTGCHDx6vTXSUcafGe_0ZXUfVRyTSrB4FNlPUMp32TO5GEjlhba4UJ0fzv0AO4uojGDWC/s320/image074-702850.png" /></a> <o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>WHSWorkExecute form<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd2reieGnLYfW9xpb1d1ZubTMCxlQokA3_Blhjj-i02KADz3apYfkLIeiUyKpxG88HX6DWGOsRPDH6lkPkKzyK0HOjMtbQE789Hlyx8yZsWeJvYDAytdFNe1eB1FCgaUdpI_2_pMElgVgs/s1600/image075-703707.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967621649058434" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd2reieGnLYfW9xpb1d1ZubTMCxlQokA3_Blhjj-i02KADz3apYfkLIeiUyKpxG88HX6DWGOsRPDH6lkPkKzyK0HOjMtbQE789Hlyx8yZsWeJvYDAytdFNe1eB1FCgaUdpI_2_pMElgVgs/s320/image075-703707.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
When launched you could use a native Microsoft Dynamics AX 2012 R3 form to simulate WMDP <o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Login<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnYsywM4Z9cLn8Lh6IRACTjZ3tAZZyeH262Bl1QaUG1ljOfzDWZYmRi9BVQmQTEfUSJC5AyJjlJjvHKx25D8h3aBl1HfYIB8nM8uLU0DXqf1Q_SQu54C21sQ1nn2o6s31olpNOpkbG8OoO/s1600/image076-704572.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967626737817682" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnYsywM4Z9cLn8Lh6IRACTjZ3tAZZyeH262Bl1QaUG1ljOfzDWZYmRi9BVQmQTEfUSJC5AyJjlJjvHKx25D8h3aBl1HfYIB8nM8uLU0DXqf1Q_SQu54C21sQ1nn2o6s31olpNOpkbG8OoO/s320/image076-704572.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Menu<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuB80IQPnuPNoxMpOHivnrxqZX2H0UUZVtxFEtgmufABuO7-eTreU4X2exOlt4s8L_N7imxMdyHnzKhatuowLggV8dwlfZDzsreqY2OLMHkbdgPQiZwAppOVMc_4XrU2QuGBCy6GuEK5YR/s1600/image077-705408.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967630740042002" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuB80IQPnuPNoxMpOHivnrxqZX2H0UUZVtxFEtgmufABuO7-eTreU4X2exOlt4s8L_N7imxMdyHnzKhatuowLggV8dwlfZDzsreqY2OLMHkbdgPQiZwAppOVMc_4XrU2QuGBCy6GuEK5YR/s320/image077-705408.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
You could also add WHSWorkExecute menu item to the menu structure and keep it always available in your environment. For example, adding “Work process” menu item to Global tools menu<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>GlobalToolsMenu<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6tOgatAMfOZTe2EGYZtaEB9-7hWWTbWy4EaoLCejX1h9EDAsllr339dLxfZaNxkfe6HtCuUSbQFlYZfbx8rghGv-1njkiHIwoREUAvFQ7N9k18_bRRZdrWFb-_VEWpun8wKhhstKy5IDC/s1600/image078-706296.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967632636062450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6tOgatAMfOZTe2EGYZtaEB9-7hWWTbWy4EaoLCejX1h9EDAsllr339dLxfZaNxkfe6HtCuUSbQFlYZfbx8rghGv-1njkiHIwoREUAvFQ7N9k18_bRRZdrWFb-_VEWpun8wKhhstKy5IDC/s320/image078-706296.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Work process<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAnp1z0CEm3qN7moG0kGJ0jzEqE165ugsc7uZYdNsWxfNRHAg6UqSVrjWmge1SmH4C0HyLE4hZMpAUjV2wgE4NHE1Rx9fHyyJxiA6WRvQDcvN4xS9ulWYIUj-Fz_7kC_ZUX6o33bJRcw0f/s1600/image079-707203.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967639297465538" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAnp1z0CEm3qN7moG0kGJ0jzEqE165ugsc7uZYdNsWxfNRHAg6UqSVrjWmge1SmH4C0HyLE4hZMpAUjV2wgE4NHE1Rx9fHyyJxiA6WRvQDcvN4xS9ulWYIUj-Fz_7kC_ZUX6o33bJRcw0f/s320/image079-707203.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
At this point in New Microsoft Dynamics AX Work process menu item is not exposed by default<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Find “Work process”<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL70nzv7vZcMx0zV43wSUtUxsN4S8sZT18quiJrhrv4P-WeNzo0rvKwlmuoJsn3nz-rNY3stQYVmjVAxiuTpTd_oMXK72JHyxSJUUkVc36HSblMLE20_6AypqN0gWvZHMH49QF1CDth7r_/s1600/image080-708394.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967643031843154" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL70nzv7vZcMx0zV43wSUtUxsN4S8sZT18quiJrhrv4P-WeNzo0rvKwlmuoJsn3nz-rNY3stQYVmjVAxiuTpTd_oMXK72JHyxSJUUkVc36HSblMLE20_6AypqN0gWvZHMH49QF1CDth7r_/s320/image080-708394.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
In fact, you can make it available the same way it was done in Microsoft Dynamics AX 2012 R3<o:p></o:p></div>
<div class="MsoNormal">
At this point I would like to add “Work process” to expose WMDP simulator in Warehouse management menu. Let’s create a quick model for this purpose<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Model <o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoI0g8U9KIFWPA2JIXXh2SNSdpcKW9hRSJDtV_mxgj9tMMSJlapYp994D_Xc4i9BxdTdqnyNalddZPogfjgbA9V_c8JoQ6wiAGVJHsWg-NWYBJU3mmE2OZ6JnQIenoYEVysx3aB5pxQ9vT/s1600/image081-709247.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967648143345010" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoI0g8U9KIFWPA2JIXXh2SNSdpcKW9hRSJDtV_mxgj9tMMSJlapYp994D_Xc4i9BxdTdqnyNalddZPogfjgbA9V_c8JoQ6wiAGVJHsWg-NWYBJU3mmE2OZ6JnQIenoYEVysx3aB5pxQ9vT/s320/image081-709247.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Then we’ll associate a new project to the model<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>New project<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnhk_onCun67Crw-ujUWQGfTTgIJyxhsGqfsZnpHiMg6k4Qc4m6ktg-JpuGQs-5pqKKQ0sGTIOI1VtAtb3EXe0bnb9wyNx300eUKmhHIMuaULtMmlShy6fCF5gi_Ntr5k_3K6dsyX3ZR-4/s1600/image082-710228.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967651720138210" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnhk_onCun67Crw-ujUWQGfTTgIJyxhsGqfsZnpHiMg6k4Qc4m6ktg-JpuGQs-5pqKKQ0sGTIOI1VtAtb3EXe0bnb9wyNx300eUKmhHIMuaULtMmlShy6fCF5gi_Ntr5k_3K6dsyX3ZR-4/s320/image082-710228.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
But before modifying Warehouse management menu we’ll find the way to launch Work process form in a web browser. The beautiful thing about New Microsoft Dynamics AX is that web pages are URL addressable which means that once authenticated we can launch required web pages by typing in URL in a web browser<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Let’s quickly add WHSWorkExecute form to the project, make it a default Startup object and launch a web browser (by Starting the project) to find out about URL we need to use<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Project <o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlSe3MPbJ9aDnaJjaGiQP5KHHmvj8GK9HawvMfFgunemezGLj59XSIjv86lvgm0ZVOpEBtbOZUaMo3VlVJOKEY5QX21_t-_MfYayqdlUI9otelMRbZwAMO7mtW02iCKipSgIQIZfSUQDem/s1600/image083-711072.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967655678691842" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlSe3MPbJ9aDnaJjaGiQP5KHHmvj8GK9HawvMfFgunemezGLj59XSIjv86lvgm0ZVOpEBtbOZUaMo3VlVJOKEY5QX21_t-_MfYayqdlUI9otelMRbZwAMO7mtW02iCKipSgIQIZfSUQDem/s320/image083-711072.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Once started web browser will pop up on the following URL: <a href="https://alexaos.cloudax.dynamics.com/?f=WHSWorkExecute&prt=initial&debug=vs%2CconfirmExit&activityid=34f59285-9e8f-0000-f2f4-f5348f9ed101&cmp=USMF"> https://alexaos.cloudax.dynamics.com/?f=WHSWorkExecute&prt=initial&debug=vs%2CconfirmExit&activityid=34f59285-9e8f-0000-f2f4-f5348f9ed101&cmp=USMF</a> opening WMDP simulator form<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>WMDP simulator inside of New Microsoft Dynamics AX <o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJveT295igTkmwtgYFbySjm1J9xHUeHmrOb3Ta3vL_D2HIVwsJeC06Vw827EJIr9nL_nSjs8rsz4mO1CNthd62cBJYAADwY4wl3_0WKU_yNXIRsOc-iblcnT-7o3pmKBNwdX0DdKSlUbHO/s1600/image084-711931.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967661091779266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJveT295igTkmwtgYFbySjm1J9xHUeHmrOb3Ta3vL_D2HIVwsJeC06Vw827EJIr9nL_nSjs8rsz4mO1CNthd62cBJYAADwY4wl3_0WKU_yNXIRsOc-iblcnT-7o3pmKBNwdX0DdKSlUbHO/s320/image084-711931.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
When we strip out unnecessary parts of the URL we’ll get the following URL that we can use to launch WMDP simulator inside of New Microsoft Dynamics AX: <a href="https://alexaos.cloudax.dynamics.com/?f=WHSWorkExecute&prt=initial&cmp=USMF"> https://alexaos.cloudax.dynamics.com/?f=WHSWorkExecute&prt=initial&cmp=USMF</a> <o:p> </o:p></div>
<div class="MsoNormal">
Please note how forms are addressed via “f” GET URL parameter and display menu items can be similarly addressed via “mi” GET URL parameter <o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>WMDP simulator inside of New Microsoft Dynamics AX – Login <o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijnXwAGMIVwPG6eyj1uRxBnjQkdba-E1YWzn8dfbZ87GCdms695Ne-CDPp0E1qWRhMV5Cq2n_-tV9mMbQ6prX0wFVXjvvKgmmLB9RO2ozkrdKtMrNuqpjsr8Bv3HvCE3fRkwurpNK-Kp9J/s1600/image085-712743.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967666850258050" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijnXwAGMIVwPG6eyj1uRxBnjQkdba-E1YWzn8dfbZ87GCdms695Ne-CDPp0E1qWRhMV5Cq2n_-tV9mMbQ6prX0wFVXjvvKgmmLB9RO2ozkrdKtMrNuqpjsr8Bv3HvCE3fRkwurpNK-Kp9J/s320/image085-712743.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>WMDP simulator inside of New Microsoft Dynamics AX – Menu <o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghDeDuXxE7feK8A1oNghMN6kSSjomTMxogSZ_Vpq-truwsf7kVTlUJc3xd6SgY0io8Tbk7segZHZlMlUe5s5OlQBiz0khO7UcQ0HWlMOubksEcrG1l4vNNo_ZZympQy7rA85e6qRF7dSoG/s1600/image086-713626.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967664376814018" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghDeDuXxE7feK8A1oNghMN6kSSjomTMxogSZ_Vpq-truwsf7kVTlUJc3xd6SgY0io8Tbk7segZHZlMlUe5s5OlQBiz0khO7UcQ0HWlMOubksEcrG1l4vNNo_ZZympQy7rA85e6qRF7dSoG/s320/image086-713626.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Now coming back to menu modification we can add an extension for Warehouse management menu and expose “Work process” menu item via menu<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Project<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEhjpzeht0ovkNQYQp2VlvSMWhmUE8PZ3sdz_yopuez5uYT708jqoyd8wxNcMBzBQA236dhxLs95l_Vx4f_R9rS_vgDhIn7Tbo6HXebxnqZdcL5EX3XOUCGO6ar51VvUVmOcRya05YWrRw/s1600/image087-714512.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967668778624210" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEhjpzeht0ovkNQYQp2VlvSMWhmUE8PZ3sdz_yopuez5uYT708jqoyd8wxNcMBzBQA236dhxLs95l_Vx4f_R9rS_vgDhIn7Tbo6HXebxnqZdcL5EX3XOUCGO6ar51VvUVmOcRya05YWrRw/s320/image087-714512.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
After we did a necessary modification in Visual Studio we can build the model to see the results reflected in New Microsoft Dynamics AX <o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Build model<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiM4D8ZX4CyFAmW-fAyvHFMOvoQldkK3cXTScuLuUdTfbTvM2lxdi1ANHksQTAHXaWayq00DyjNxMUXjwNhzYe8VcW6-flzoFaQH7zTz59W4OpOeNj__AlBAiLdvG2I2alm2EUaF58Me-PX/s1600/image088-715532.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967673300899250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiM4D8ZX4CyFAmW-fAyvHFMOvoQldkK3cXTScuLuUdTfbTvM2lxdi1ANHksQTAHXaWayq00DyjNxMUXjwNhzYe8VcW6-flzoFaQH7zTz59W4OpOeNj__AlBAiLdvG2I2alm2EUaF58Me-PX/s320/image088-715532.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
And here’s the result<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Warehouse management menu<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi09SAGl3ml6Hp0LrB66u-5XvVY1xoUit5HVC1Jleb_pF6vMyFgG-nVchIcxaT5vHnGkn2UpXIrjHtCWV2VrzRBSKmzCZLAS4BFNraumVWLfitduDmBpfsKrcQlDtVznaj2Jns92lrL6ji6/s1600/image089-716429.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6279967675800015810" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi09SAGl3ml6Hp0LrB66u-5XvVY1xoUit5HVC1Jleb_pF6vMyFgG-nVchIcxaT5vHnGkn2UpXIrjHtCWV2VrzRBSKmzCZLAS4BFNraumVWLfitduDmBpfsKrcQlDtVznaj2Jns92lrL6ji6/s320/image089-716429.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
<b>Summary</b>: In this article we discussed how to configure Warehouse Mobile Device Portal in New Microsoft Dynamics AX and quickly make it available on mobile devices for the purposes of POC (Proof of Concept), demonstration or workshop using Demo environment. <b>Please note that this information may also help you better understand the process of configuring Warehouse Mobile Device Portal for Production purposes according to the official guidance described here: <a href="https://ax.help.dynamics.com/en/wiki/warehouse-mobile-devices-portal-for-microsoft-dynamics-ax/"> https://ax.help.dynamics.com/en/wiki/warehouse-mobile-devices-portal-for-microsoft-dynamics-ax/</a></b>.<b><o:p></o:p></b></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
<b>Tags</b>: New Microsoft Dynamics AX, Warehouse Management, Warehouse Mobile Devices Portal, WMDP, IIS, WHSWorkExecute. <b><o:p></o:p></b></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
<b>Note</b>: This document is intended for information purposes only, presented as is with no warranties from the author. This document may be updated with more content to better outline the issues and describe the solutions.<o:p></o:p></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
<b>Author</b>: <a href="https://www.linkedin.com/in/anikiev"> Alex Anikiev, PhD</a><u><span style="color: #0563c1;"><o:p></o:p></span></u></div>
</div>
Alex Anikievhttp://www.blogger.com/profile/13438665643699572584noreply@blogger.com2tag:blogger.com,1999:blog-1089142947962270747.post-49155683448123681582016-02-16T15:21:00.001-08:002016-02-16T15:45:01.628-08:00Microsoft Azure Machine Learning for Microsoft Dynamics<div class="WordSection1">
<div style="border-bottom: solid #5b9bd5 1.0pt; border: none; padding: 0in 0in 4.0pt 0in;">
<div align="center" class="MsoTitle" style="text-align: center;">
<div style="text-align: left;">
<b>Purpose:</b> The purpose of this article is to illustrate how various Machine Learning algorithms apply in the context of real world business scenarios for Microsoft Dynamics</div>
</div>
</div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>Scenario: </b>In my previous <a href="http://ax2012manufacturing.blogspot.com/"> articles</a> I described an Enterprise IoT (Internet of Things) scenario as depicted on the diagram below <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpwc1JmlSUjdYMaq1daCDMnVQKNyKVA3iOlBXtjmd-YRfoxMguqVYXqSbYc9ToYRTsMjPU7r4INTGXSLrh4kb8IKIvLUTqsCIjdGL6TUNpdLaPOAwzQ7hnPw1zL-5maAeG0q6lbf63spZr/s1600/image001-718615.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033223755927858" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpwc1JmlSUjdYMaq1daCDMnVQKNyKVA3iOlBXtjmd-YRfoxMguqVYXqSbYc9ToYRTsMjPU7r4INTGXSLrh4kb8IKIvLUTqsCIjdGL6TUNpdLaPOAwzQ7hnPw1zL-5maAeG0q6lbf63spZr/s320/image001-718615.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
In this article in a very simple terms I’ll explain how to apply Machine Learning to implement your own scenarios for Microsoft Dynamics. In my experiments I’ll leverage Microsoft Azure Machine Learning cloud service. Please find more information about Microsoft Azure Machine Learning here: <a href="https://azure.microsoft.com/en-us/services/machine-learning/"> https://azure.microsoft.com/en-us/services/machine-learning/</a> <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Machine Learning is a scientific discipline that explores the construction and study of algorithms that can learn from data. Please find more information about Machine Learning here: <a href="https://en.wikipedia.org/wiki/Machine_learning">https://en.wikipedia.org/wiki/Machine_learning</a> <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
In particular, you can use Machine Learning algorithms to predict the future trends, better structure your knowledge in a certain domain and gain some meaningful business insights<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
The basic principle is that you first teach the system by feeding it some data (or by other words, the systems learns from the data you provide) and then apply appropriate mathematical algorithm for a particular task to get to the result. Using Microsoft Azure Machine Learning you don’t need to implement a respective mathematical apparatus (no coding), instead you just use Microsoft Azure Machine Learning Studio drag-n-drop design area to assemble your own experiments. Please note that it is important to have a reliable dataset and know your data structure to achieve great outcomes from using the power of Machine Learning <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
For the sake of simplicity, we’ll divide Machine Learning algorithms into 2 broad categories <o:p></o:p></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
<b>Supervised learning</b>:<o:p></o:p></div>
<div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1; text-indent: -.25in;">
< - Regression<o:p></o:p></div>
<div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo1; text-indent: -.25in;">
< - Classification<o:p></o:p></div>
<div class="MsoNormal">
<b>Unsupervised learning</b>:<o:p></o:p></div>
<div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1; text-indent: -.25in;">
< - Clustering<o:p></o:p></div>
<div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo1; text-indent: -.25in;">
< - Anomaly detection<o:p></o:p></div>
<div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo1; text-indent: -.25in;">
<br /></div>
<div class="MsoNormal">
In Supervised learning scenarios you will typically know exactly what you are trying to predict. For example, numerical or non-numerical values predictions. In Unsupervised learning scenarios you may be lacking a good enough understanding of the problem domain, in fact typically knowing roughly what you may be looking for, thus you may be relying on the system to provide some hints to gain a better understanding of the problem domain. For example, grouping info in logical way or detecting deviations from normal system behavior<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Currently Microsoft Azure Machine Learning delivers a multitude of algorithms in 4 main categories<o:p></o:p></div>
<div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1; text-indent: -.25in;">
< - Regression<o:p></o:p></div>
<div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;">
< - Classification<o:p></o:p></div>
<div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;">
< - Clustering<o:p></o:p></div>
<div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo1; text-indent: -.25in;">
< - Anomaly detection <o:p></o:p></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
<b>Regression</b>: In statistics regression analysis is a statistical process for estimating the relationships among variables. Regression analysis is widely used for prediction and forecasting<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Example: Machine Log (Predicting numeric values)<o:p></o:p></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
<b>Classification</b>: In statistics classification is the problem of identifying to which of a set of categories a new observation belongs on the basis of a training set of data containing observations whose category membership is known<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Example: Machine Log (Predicting non-numeric values)<o:p></o:p></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
<b>Clustering</b>: Clustering is the task of grouping a set of objects in such a way that objects in the same group (called a cluster) are more similar (in some sense or another) to each other than to those in other groups (clusters)<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Example: Machine Log (Grouping information)<o:p></o:p></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
<b>Anomaly detection</b>: In <a href="https://en.wikipedia.org/wiki/Data_mining" title="Data mining"> <span style="color: windowtext; text-decoration: none;">data mining</span></a>, anomaly detection (or outlier detection) is the identification of items, events or observations which do not conform to an expected pattern or other items in a <a href="https://en.wikipedia.org/wiki/Dataset" title="Dataset"><span style="color: windowtext; text-decoration: none;">dataset</span></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Example: Operator Log (Erroneous data entry)<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Now knowing the general purpose of each type of algorithms we’ll review them one by one with examples<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
First off in Microsoft Azure Machine Learning Studio I’ll create 4 experiments for 4 types of algorithms as shown below <o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Experiments<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTQx1IjOzywmgp1iBOPcLs2k-4AyT-_Od377Z9g-pE2eg4w0XEq4YBOddV3MvftmCs9cmKOQIOt0XjElCB-HPenVnPUeJvCZqLFvdVu6Wk51GxCUc7etwD_4Jq68i1xOrsioJhP8k5e5sI/s1600/image002-721272.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033236416652370" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTQx1IjOzywmgp1iBOPcLs2k-4AyT-_Od377Z9g-pE2eg4w0XEq4YBOddV3MvftmCs9cmKOQIOt0XjElCB-HPenVnPUeJvCZqLFvdVu6Wk51GxCUc7etwD_4Jq68i1xOrsioJhP8k5e5sI/s320/image002-721272.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
To keep it simple the data I’ll be using is in form of Excel spreadsheets, and I’ll upload respective Excel spreadsheets as datasets as shown below<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Datasets<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_B6csBrfOK4MJqNKLtreuWMfrvrx9KzBjh0Qt65M02HigKeVoBAA3bwZ0TY0G9mh9CJb8DpLDNV8Kox3A5noYWcx9YdZdONBcEccV_V9it47_jB_rGrZjKXrK9-35GUx0IGWF6EejJ1Pk/s1600/image003-725410.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033250571446882" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_B6csBrfOK4MJqNKLtreuWMfrvrx9KzBjh0Qt65M02HigKeVoBAA3bwZ0TY0G9mh9CJb8DpLDNV8Kox3A5noYWcx9YdZdONBcEccV_V9it47_jB_rGrZjKXrK9-35GUx0IGWF6EejJ1Pk/s320/image003-725410.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
In order to create a new dataset, it is simple to use a dialog as shown below<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>New dataset<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSaN6pAQIyZvJ0M5COJY-ngfCo-3xMGM0cLTWvGziH9cRhDlslZKBatRYhBnxlzsnlAPn8wkWMz_hU061W2zhX4YeTXgeBdXYEVjDMnFtB-yFwN3WZmepLmB-BiwgAGUHEYdBUIQL-DyCK/s1600/image004-727284.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033256209278786" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSaN6pAQIyZvJ0M5COJY-ngfCo-3xMGM0cLTWvGziH9cRhDlslZKBatRYhBnxlzsnlAPn8wkWMz_hU061W2zhX4YeTXgeBdXYEVjDMnFtB-yFwN3WZmepLmB-BiwgAGUHEYdBUIQL-DyCK/s320/image004-727284.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Creating a new experiment is also simple<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>New experiment<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFQ9P5bdwR4DJUhJyVSF9MiNWGi0EYVbuFwwyFwYJSzFLcavmYC2JHCG9jpq6LDikiZkDjL08hwOvBIjJk4qrDXY7q9Q8qVxv3qhKgqzFI25pNIi_tyS8lMjS3hYivLjkb8OtNLs5V3Xlx/s1600/image005-729260.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033267284291522" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFQ9P5bdwR4DJUhJyVSF9MiNWGi0EYVbuFwwyFwYJSzFLcavmYC2JHCG9jpq6LDikiZkDjL08hwOvBIjJk4qrDXY7q9Q8qVxv3qhKgqzFI25pNIi_tyS8lMjS3hYivLjkb8OtNLs5V3Xlx/s320/image005-729260.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
First Machine Learning algorithm we review will be Regression algorithm<o:p></o:p></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
<b>Regression<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
In this experiment we’ll consider make-to-order Manufacturing environment and Machine Log dataset generated by equipment/machinery on the shop floor. The actual data will represent what we produced over the period of time. The goal will be to predict what will be produced in the future based on historical production data representing customer demand. By other words, we’ll be predicting numeric values representing volumes of production in the future<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Excel spreadsheet with the data for Regression experiment looks like below<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Dataset<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOJ5-CF5YLwmT8wDc8e8BHI1yq0r4LWGtDrZYF8xPe6dVx6FE4Jvrma433LRPcc9PsgSe7vp0H3ZrVDwoM-HQycLVx1NqYb2t6hpTRGFKlhQizzgCUlbe7Ow2twigfV-yfe5zkpC92dlyd/s1600/image006-731174.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033273255700114" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOJ5-CF5YLwmT8wDc8e8BHI1yq0r4LWGtDrZYF8xPe6dVx6FE4Jvrma433LRPcc9PsgSe7vp0H3ZrVDwoM-HQycLVx1NqYb2t6hpTRGFKlhQizzgCUlbe7Ow2twigfV-yfe5zkpC92dlyd/s320/image006-731174.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
I highlighted with Green the values I’d like to predict based on historical data. Qty for the last 5 rows are not known yet, but I do know what I have already produced previously. Please note that my dataset is very small but yet descriptive enough for the explanation. For simplicity I’m also making a logical assumption that customer demand is repeatable, otherwise to get more accurate results I’d have to use a larger dataset and/or a different algorithm <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
The model I built in Microsoft Azure Machine Learning Studio for Regression experiment looks like below<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<i>Model<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGyPkFZPo5-eJVsCEGqolWSMx-VMmEBWj0EKHMcSWIRTtg2IHaWIlO2GQBrRq4NE_3gipG0yN9hurA3FbCZu_M4C-6BXtPCl-3p_HrkPOpyiOk14taT-Z_DOCp5XyLai_Do3K5WSiJi34P/s1600/image007-733469.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033285412689906" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGyPkFZPo5-eJVsCEGqolWSMx-VMmEBWj0EKHMcSWIRTtg2IHaWIlO2GQBrRq4NE_3gipG0yN9hurA3FbCZu_M4C-6BXtPCl-3p_HrkPOpyiOk14taT-Z_DOCp5XyLai_Do3K5WSiJi34P/s320/image007-733469.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Here’s the list of building blocks with explanations<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none;"> <tbody>
<tr> <td style="border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 62.75pt;" valign="top" width="126"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Element<o:p></o:p></div>
</td> <td style="border-left: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 404.75pt;" valign="top" width="810"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Purpose<o:p></o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 62.75pt;" valign="top" width="126"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Dataset<o:p></o:p></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 404.75pt;" valign="top" width="810"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1LlYJClLpx91ILgsSctyUEs1SCJxG9tFLAsYAdkc9M03rjmUdlwRO5dfqfqKmbybAEutDBkbi69GKynqP-KTzPAyx1fKOnKX4dPUiyXVpNFwFZ455S5TxXcz9QCB3qj3KBoipXCzclQhY/s1600/image008-735296.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033290560289906" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1LlYJClLpx91ILgsSctyUEs1SCJxG9tFLAsYAdkc9M03rjmUdlwRO5dfqfqKmbybAEutDBkbi69GKynqP-KTzPAyx1fKOnKX4dPUiyXVpNFwFZ455S5TxXcz9QCB3qj3KBoipXCzclQhY/s320/image008-735296.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1032" DrawAspect="Content" ObjectID="_1517141241"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Excel spreadsheet with historical production data <o:p></o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 62.75pt;" valign="top" width="126"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Project columns<o:p></o:p></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 404.75pt;" valign="top" width="810"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikxYLCDKPE-KIdE25xBfQ7r-I5f8nV60nCMKYLZ9YalV_sG7r0kU2T-81X6Dci0mp8Pl8Tq9DNUQK-i-PIRcuz83M0XDTfz0W2cL-1rm3t0q4dBDeJPEewDOlGkEF9DDbZm8jfY8Sh3Rpz/s1600/image009-737311.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033301331025954" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikxYLCDKPE-KIdE25xBfQ7r-I5f8nV60nCMKYLZ9YalV_sG7r0kU2T-81X6Dci0mp8Pl8Tq9DNUQK-i-PIRcuz83M0XDTfz0W2cL-1rm3t0q4dBDeJPEewDOlGkEF9DDbZm8jfY8Sh3Rpz/s320/image009-737311.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1033" DrawAspect="Content" ObjectID="_1517141242"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter" /> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0" /> <v:f eqn="sum @0 1 0" /> <v:f eqn="sum 0 0 @1" /> <v:f eqn="prod @2 1 2" /> <v:f eqn="prod @3 21600 pixelWidth" /> <v:f eqn="prod @3 21600 pixelHeight" /> <v:f eqn="sum @0 0 1" /> <v:f eqn="prod @6 1 2" /> <v:f eqn="prod @7 21600 pixelWidth" /> <v:f eqn="sum @8 21600 0" /> <v:f eqn="prod @7 21600 pixelHeight" /> <v:f eqn="sum @10 21600 0" /> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" /> <o:lock v:ext="edit" aspectratio="t" /> </v:shapetype><v:shape id="_x0000_i1034" type="#_x0000_t75" style='width:468.5pt;height:231.5pt' o:ole=""> <v:imagedata src="cid:image010.png@01D168CD.A059F750" o:title="" /> </v:shape><![endif]--><![if !vml]><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZRKVRsComB4FQSEMDbUoeEzyx-cWgeI_Nvi60hCvz-fFgjH3LejkucirPNY9UXS2PG63buy9anAbNnySpwKlokizzcqtwLvJPtPj2t3H5kDbcCwlBNdWdUcsjbdvHqgynzjp9PgI8PaNB/s1600/image011-739443.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033310172672290" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZRKVRsComB4FQSEMDbUoeEzyx-cWgeI_Nvi60hCvz-fFgjH3LejkucirPNY9UXS2PG63buy9anAbNnySpwKlokizzcqtwLvJPtPj2t3H5kDbcCwlBNdWdUcsjbdvHqgynzjp9PgI8PaNB/s320/image011-739443.jpg" /></a><![endif]><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1034" DrawAspect="Content" ObjectID="_1517141243"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Please note that I specified meaningful variables (Product, Qty, TransDate, Machine, etc.) which in my opinion correlate, by other words interdependent, for training the system <o:p></o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 62.75pt;" valign="top" width="126"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Split data<o:p></o:p></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 404.75pt;" valign="top" width="810"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJxH7gGz8stHZfooQ2V5IQ009LoXBPUzmJoSUasDhUZKolylRFfHiVdIP_ynsS-rRmCLf84K7FFV9n6w_hr0zLEpygPiLvj5et55NuiMf8yyRdwoz2tESHeRkj3kG9H9xkD45tVkcNvOVA/s1600/image012-741301.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033318384171202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJxH7gGz8stHZfooQ2V5IQ009LoXBPUzmJoSUasDhUZKolylRFfHiVdIP_ynsS-rRmCLf84K7FFV9n6w_hr0zLEpygPiLvj5et55NuiMf8yyRdwoz2tESHeRkj3kG9H9xkD45tVkcNvOVA/s320/image012-741301.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1035" DrawAspect="Content" ObjectID="_1517141244"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Please note that I use 84% of the data to train the system and the rest of 16% of the data (the last 5 rows highlighted with green) for prediction<o:p></o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 62.75pt;" valign="top" width="126"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Linear Regression<o:p></o:p></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 404.75pt;" valign="top" width="810"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkjJbuFRZgScgyi7jBegVR59O_ArSD3_5qbWPEH0MUvVez9x2j8P7U56lhpeXCbuXfmPWrYx0JWWSF75AXd4D9TauxhTwl6WnCosdJgHWnEd7Lzyf4pq6Sq1sAxtM0II9whtYRHxuhvMhU/s1600/image013-743048.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033326904114098" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkjJbuFRZgScgyi7jBegVR59O_ArSD3_5qbWPEH0MUvVez9x2j8P7U56lhpeXCbuXfmPWrYx0JWWSF75AXd4D9TauxhTwl6WnCosdJgHWnEd7Lzyf4pq6Sq1sAxtM0II9whtYRHxuhvMhU/s320/image013-743048.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1036" DrawAspect="Content" ObjectID="_1517141245"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Please note that I’m using a simple Linear Regression algorithm to identify a trend and predict the future data (Qty produced)<o:p></o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 62.75pt;" valign="top" width="126"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Train model<o:p></o:p></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 404.75pt;" valign="top" width="810"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjI3yzDdlb_aOwmtUuUp6O7URSBOtVs4ayh_qW9oZH1HA6XFbcvLAMnoWiN1OneUf9izZm7fs4hDu4QdziPXv9DTG-vnZqlA_R_lV7XyNd3nUulLzFLn8DmCxt3LfA94xxEbbzk-wMBSrsk/s1600/image014-744839.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033334730768050" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjI3yzDdlb_aOwmtUuUp6O7URSBOtVs4ayh_qW9oZH1HA6XFbcvLAMnoWiN1OneUf9izZm7fs4hDu4QdziPXv9DTG-vnZqlA_R_lV7XyNd3nUulLzFLn8DmCxt3LfA94xxEbbzk-wMBSrsk/s320/image014-744839.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1037" DrawAspect="Content" ObjectID="_1517141246"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<!--[if gte vml 1]><v:shape id="_x0000_i1038" type="#_x0000_t75" style='width:468.5pt;height:231.5pt' o:ole=""> <v:imagedata src="cid:image015.png@01D168CD.A059F750" o:title="" /> </v:shape><![endif]--><![if !vml]><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnL04cm7BEGAcpCBQVuD9q6f8VnOsQKEvufd7DvE-izJ3_W8aJom4n4aCGkxz4SN4g_sm2c-2Kriu35HiYPoKd24iWbUE5BpXbOfpVcMABRpnvQp6c2sus4QGNwwe-PKU1zBxfQ3JmFn3C/s1600/image016-746654.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033344195791410" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnL04cm7BEGAcpCBQVuD9q6f8VnOsQKEvufd7DvE-izJ3_W8aJom4n4aCGkxz4SN4g_sm2c-2Kriu35HiYPoKd24iWbUE5BpXbOfpVcMABRpnvQp6c2sus4QGNwwe-PKU1zBxfQ3JmFn3C/s320/image016-746654.jpg" /></a><![endif]><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1038" DrawAspect="Content" ObjectID="_1517141247"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Please note that I explicitly specify what data I’m trying to predict (Qty produced) during training of the model<o:p></o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 62.75pt;" valign="top" width="126"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Score model<o:p></o:p></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 404.75pt;" valign="top" width="810"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaPc32YTUpdEGDk2GsvhmOP_dNlGZBbhpJqKp-auYxcmsI6HWkzXJ4OP7rkuM9sDEpj9K7eVskmXMi225JPvxq2JYO9RJw9HTMQv5bBVAIY28OiyDQIiXbLtLIk-lZ2LzrlG1wNcx2Z1u-/s1600/image017-748794.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033352303526594" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaPc32YTUpdEGDk2GsvhmOP_dNlGZBbhpJqKp-auYxcmsI6HWkzXJ4OP7rkuM9sDEpj9K7eVskmXMi225JPvxq2JYO9RJw9HTMQv5bBVAIY28OiyDQIiXbLtLIk-lZ2LzrlG1wNcx2Z1u-/s320/image017-748794.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1039" DrawAspect="Content" ObjectID="_1517141248"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
After training the model I’ll be scoring the model to come up with predictions (Qty produced) <o:p></o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 62.75pt;" valign="top" width="126"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Evaluate model<o:p></o:p></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 404.75pt;" valign="top" width="810"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkLbcuDELFivy3T_q4IZMN0QSMewBlzMSBkAP20RI-uJXapp9jGrg_u3Enp9v4CG4USV0b1Xf1Z5AXW38SQo9yNiJs0CLOgP8ZJyA5gRLCCTTqCYn9I9TtwJAbjuKawKwFZoScHQxioyyF/s1600/image018-750840.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033362073301154" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkLbcuDELFivy3T_q4IZMN0QSMewBlzMSBkAP20RI-uJXapp9jGrg_u3Enp9v4CG4USV0b1Xf1Z5AXW38SQo9yNiJs0CLOgP8ZJyA5gRLCCTTqCYn9I9TtwJAbjuKawKwFZoScHQxioyyF/s320/image018-750840.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1040" DrawAspect="Content" ObjectID="_1517141249"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Once model has been scored I can also check the accuracy of my prediction in case I knew actuals. Typically, evaluation is done after prediction as time passes and we know the actuals<o:p></o:p></div>
</td> </tr>
</tbody> </table>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Once I run the model I can then visualize the results<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<i>Visualize<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHQO6_NfFtEhs9b9AC7CNHI07EeiUIV_0G_oREwHHTcv6Y0XBKQYjUOqaxhfBFSSAbFUvOafVyn4FrF6W9PMaFgSMCE54rS7EbZywf71KQ5Cxjg0AFxoPPf_PzVAacRScxBLl3S-QUEOF0/s1600/image019-752894.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033370800351346" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHQO6_NfFtEhs9b9AC7CNHI07EeiUIV_0G_oREwHHTcv6Y0XBKQYjUOqaxhfBFSSAbFUvOafVyn4FrF6W9PMaFgSMCE54rS7EbZywf71KQ5Cxjg0AFxoPPf_PzVAacRScxBLl3S-QUEOF0/s320/image019-752894.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
The result will be presented in Scored labels column as shown below<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Result<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTGNdugBKew-Y2dyXvayGbG05QGy_mMGhGelooeLKJEsgBNW7pWC4WRWaYLztlak7BiFEIbJI05qPtfSUSJKy6R_fQ0ywBcl7bWBbWH5yKCa83tDMLU1uiTLyS08OapRqWUucBtKXiQOLB/s1600/image020-755271.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033379524450242" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTGNdugBKew-Y2dyXvayGbG05QGy_mMGhGelooeLKJEsgBNW7pWC4WRWaYLztlak7BiFEIbJI05qPtfSUSJKy6R_fQ0ywBcl7bWBbWH5yKCa83tDMLU1uiTLyS08OapRqWUucBtKXiQOLB/s320/image020-755271.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
You can also review evaluation results as shown below <o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Evaluation results<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6n_xxyl0Mp3wzIPzLfAky0URxdbKlu2j8DEIUM6q16V0jKwbek5ztAAuM8SErX5MPfe2iNHtbjgDBU8Kt_Zsvx1CBt5cvSWFuI7E1jG4X0bSzoYuJiE4rznvAsDwKkQ0Y2u3ww0lTFfKZ/s1600/image021-757429.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033390168485090" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6n_xxyl0Mp3wzIPzLfAky0URxdbKlu2j8DEIUM6q16V0jKwbek5ztAAuM8SErX5MPfe2iNHtbjgDBU8Kt_Zsvx1CBt5cvSWFuI7E1jG4X0bSzoYuJiE4rznvAsDwKkQ0Y2u3ww0lTFfKZ/s320/image021-757429.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Now as we have historical data and predictions data we can visualize this data using Business intelligence tools and services like Microsoft Excel Power View and Microsoft Power BI <o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Business Intelligence<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgN8bauuQHNMW-awXCpW-KP1a4G9xmyIs2hhe_jczEDXK3hQepc_NCSCFJulporiAvM2kNDRTsw3IPjN7qX20eas21eL0zDjJmGxAwvmDmNxL-1HuO1vXfeGth-RGSaaQGeUn1B1DZERQtl/s1600/image022-759793.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033399715917330" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgN8bauuQHNMW-awXCpW-KP1a4G9xmyIs2hhe_jczEDXK3hQepc_NCSCFJulporiAvM2kNDRTsw3IPjN7qX20eas21eL0zDjJmGxAwvmDmNxL-1HuO1vXfeGth-RGSaaQGeUn1B1DZERQtl/s320/image022-759793.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
The next algorithm we review will be Classification algorithm<o:p></o:p></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
<b>Classification<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
In this experiment we’ll consider make-to-order Manufacturing environment and Machine Log dataset generated by equipment/machinery on the shop floor like in the previous experiment. In fact, this time I’ll add additional piece of information regarding the priority of an order = Low, Medium, High. The actual data will represent what we produced over the period of time and also how we prioritized our work in the past. The goal will be to predict what production will likely to be prioritized in the future based on historical production data representing customer demand and past priorities. By other words, we’ll be predicting non-numeric values representing priorities for production orders from the list of {Low, Medium, High} in the future<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Excel spreadsheet with the data for Classification experiment looks like below<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Dataset<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaG86IqgMeNp68CQnWhUqbr0f1Ku5YwbQJXx8AZFkRHOaRwDiyAz7bGM29oMz5nHiYeWkv_nzRL-EjUprD8xOEWA_l9izLJRpUEwTDx2K-SrmAkynapp7UrPryBbfzP3z4uk_jiuCKb1GO/s1600/image023-762651.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033410668779698" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaG86IqgMeNp68CQnWhUqbr0f1Ku5YwbQJXx8AZFkRHOaRwDiyAz7bGM29oMz5nHiYeWkv_nzRL-EjUprD8xOEWA_l9izLJRpUEwTDx2K-SrmAkynapp7UrPryBbfzP3z4uk_jiuCKb1GO/s320/image023-762651.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
I highlighted with Green the values I’d like to predict based on historical data. Priority for the last 5 rows are not known yet (by default they are set to Low now), but I do know how we prioritized production orders in the past. Please note that my dataset is very small but yet descriptive enough for the explanation. For simplicity I’m also making a logical assumption that customer demand is repeatable and some of the customers are more priority than others, otherwise to get more accurate results I’d have to use a larger dataset and/or a different algorithm <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
The model I built in Microsoft Azure Machine Learning Studio for Classification experiment looks like below<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Model<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9bk59fQmnyNisxy9TXHAVX0qHIAcQGFT-AYmIrwI_Ec46PIpDiSbNsJPA4ugBpLZpgY0knWtvfNmCIFU4j_5f-rLUXYtG4YZ5LTP9RbnGIrDkrE3cHto7YCcahr_nQvC6vqNXUlnhlKn9/s1600/image024-765200.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033419030028322" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9bk59fQmnyNisxy9TXHAVX0qHIAcQGFT-AYmIrwI_Ec46PIpDiSbNsJPA4ugBpLZpgY0knWtvfNmCIFU4j_5f-rLUXYtG4YZ5LTP9RbnGIrDkrE3cHto7YCcahr_nQvC6vqNXUlnhlKn9/s320/image024-765200.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Here’s the list of building blocks with explanations<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none;"> <tbody>
<tr> <td style="border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 71.75pt;" valign="top" width="144"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Element<o:p></o:p></div>
</td> <td style="border-left: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 395.75pt;" valign="top" width="792"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Purpose<o:p></o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 71.75pt;" valign="top" width="144"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Dataset<o:p></o:p></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 395.75pt;" valign="top" width="792"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPchBd3DTCy1jZeN_KYFQOd0JfKeIMCiWNO84JWc_tehaGtf_wvwydu4e9gDL4u1nzENLbSuhA4fAp40gPonNo-15KzGADXOw0hL1F7yW0mD_ADC6VrUmtPk9bv6ENi9DKK4AwjL1OLgL8/s1600/image025-767660.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033435078802818" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPchBd3DTCy1jZeN_KYFQOd0JfKeIMCiWNO84JWc_tehaGtf_wvwydu4e9gDL4u1nzENLbSuhA4fAp40gPonNo-15KzGADXOw0hL1F7yW0mD_ADC6VrUmtPk9bv6ENi9DKK4AwjL1OLgL8/s320/image025-767660.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1047" DrawAspect="Content" ObjectID="_1517141250"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Excel spreadsheet with historical production data<o:p></o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 71.75pt;" valign="top" width="144"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Project columns<o:p></o:p></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 395.75pt;" valign="top" width="792"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjC_J0rZze5JF2sbJzQhF5Mgf1OJzRksLk3_o-PXwHFg5xig8lhN0MCHgTBRG-we4MVqmoEukANVSiwumwyYbWsukBtLjbwK5BaR3Q-ihiY57Q0Xvzxpu_Fe3gwTeG9XsgKUnrhaBXG9mdG/s1600/image026-769490.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033444061487506" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjC_J0rZze5JF2sbJzQhF5Mgf1OJzRksLk3_o-PXwHFg5xig8lhN0MCHgTBRG-we4MVqmoEukANVSiwumwyYbWsukBtLjbwK5BaR3Q-ihiY57Q0Xvzxpu_Fe3gwTeG9XsgKUnrhaBXG9mdG/s320/image026-769490.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1048" DrawAspect="Content" ObjectID="_1517141251"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<!--[if gte vml 1]><v:shape id="_x0000_i1049" type="#_x0000_t75" style='width:468pt;height:231.5pt' o:ole=""> <v:imagedata src="cid:image027.png@01D168CD.A059F750" o:title="" /> </v:shape><![endif]--><![if !vml]><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPKU3CTA349rM1SxmSXtx57VXjeaeO7Wttp52gZEPRLU1cNIdTyPPk9aR5dAJhJscHOHFu-G9D1ezRgeSfL61Pytybn1dCJ7hWs9bN1-EkP_rGHlvGeclqcOFE2pfSay4woiDtM5UebwNS/s1600/image028-771382.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033446742327874" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPKU3CTA349rM1SxmSXtx57VXjeaeO7Wttp52gZEPRLU1cNIdTyPPk9aR5dAJhJscHOHFu-G9D1ezRgeSfL61Pytybn1dCJ7hWs9bN1-EkP_rGHlvGeclqcOFE2pfSay4woiDtM5UebwNS/s320/image028-771382.jpg" /></a><![endif]><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1049" DrawAspect="Content" ObjectID="_1517141252"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Please note that I specified meaningful variables (Product, Qty, TransDate, Machine, etc., Priority) which in my opinion correlate, by other words interdependent, for training the system <o:p></o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 71.75pt;" valign="top" width="144"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<br /></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 395.75pt;" valign="top" width="792"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHkJ_sVjoldKVUPO4cyL8CXQM3b2fPdHHKZJ_v5dQDabjMWBN5AWMYcnH_7VREYMRcBOfmWf31VbMAFCfrJzHmgSoOUOaB-Mbf9lvefc9S8AXxrQhnTQoGOVgrWs2VsNwkAPSA9-HWdj_6/s1600/image029-773235.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033456081464546" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHkJ_sVjoldKVUPO4cyL8CXQM3b2fPdHHKZJ_v5dQDabjMWBN5AWMYcnH_7VREYMRcBOfmWf31VbMAFCfrJzHmgSoOUOaB-Mbf9lvefc9S8AXxrQhnTQoGOVgrWs2VsNwkAPSA9-HWdj_6/s320/image029-773235.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1050" DrawAspect="Content" ObjectID="_1517141253"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Please note that I use 84% of the data to train the system and the rest of 16% of the data (the last 5 rows highlighted with green) for prediction<o:p></o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 71.75pt;" valign="top" width="144"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Multiclass decision forest<o:p></o:p></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 395.75pt;" valign="top" width="792"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUGeOb-KnCmQ39W0pEDFAHlZM43kbheutDsYS65fH69H7IB8yNRZ9Bwq8zwKBH_Rv407XPzoSNAUnpWHzF0276pJ9ZVRpOsQCEhJLVkp0LN6Sz26uyf1Pmk4Wrq1yLe1bynyDsSZSE3xNZ/s1600/image030-775157.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033462104211218" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUGeOb-KnCmQ39W0pEDFAHlZM43kbheutDsYS65fH69H7IB8yNRZ9Bwq8zwKBH_Rv407XPzoSNAUnpWHzF0276pJ9ZVRpOsQCEhJLVkp0LN6Sz26uyf1Pmk4Wrq1yLe1bynyDsSZSE3xNZ/s320/image030-775157.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1051" DrawAspect="Content" ObjectID="_1517141254"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Please note that I’m using a Multiclass decision forest algorithm to identify a trend and predict the future data (Production order priority)<o:p></o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 71.75pt;" valign="top" width="144"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Train model<o:p></o:p></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 395.75pt;" valign="top" width="792"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7vdGgRMqKHVdgAf-2no4Y5PJSdr5u5ZsTxSBXJSoCGWPAJYXppGzIrEc01f0RvxqNeIGZXGUGmr29m2tP7koqFUrw7t0gzKAX1gIhtxL_ca6nMZlDMjtUfxoRSeuEmgPyEvCf8maQNZ-1/s1600/image031-777017.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033505776392226" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7vdGgRMqKHVdgAf-2no4Y5PJSdr5u5ZsTxSBXJSoCGWPAJYXppGzIrEc01f0RvxqNeIGZXGUGmr29m2tP7koqFUrw7t0gzKAX1gIhtxL_ca6nMZlDMjtUfxoRSeuEmgPyEvCf8maQNZ-1/s320/image031-777017.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1052" DrawAspect="Content" ObjectID="_1517141255"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<!--[if gte vml 1]><v:shape id="_x0000_i1053" type="#_x0000_t75" style='width:468.5pt;height:231.5pt' o:ole=""> <v:imagedata src="cid:image032.png@01D168CD.A059F750" o:title="" /> </v:shape><![endif]--><![if !vml]><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiL1MFehlbjb9lgECoFLYg0eWGGivYwbZDlCESwK4Dhx-OAKtSkjM1S6z2sbDUznnRF7j_H7cptVIyZ6wRw_oBYUG7tPc9Thlkrq5nNb4kcg_RM-hV0OG0DL4rMJP7xzeveb4DP5I6_x-hy/s1600/image033-786802.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033516394349538" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiL1MFehlbjb9lgECoFLYg0eWGGivYwbZDlCESwK4Dhx-OAKtSkjM1S6z2sbDUznnRF7j_H7cptVIyZ6wRw_oBYUG7tPc9Thlkrq5nNb4kcg_RM-hV0OG0DL4rMJP7xzeveb4DP5I6_x-hy/s320/image033-786802.jpg" /></a><![endif]><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1053" DrawAspect="Content" ObjectID="_1517141256"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Please note that I explicitly specify what data I’m trying to predict (Production order priority) during training of the model<o:p></o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 71.75pt;" valign="top" width="144"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Score model<o:p></o:p></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 395.75pt;" valign="top" width="792"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihD1GNdtX-PZKnQG40WZDmdSsCucjKYqt92PoJfIJHPqFNMS8J_HtMlrjFCZLpNvUGDdHJHwgCyDc8lQ_WTaPweyPZxvi831oQzAxz_UENod_g_KvcwEJq5vyYZgLS4-O6wTAok4c7qBpx/s1600/image034-788886.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033523769354274" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihD1GNdtX-PZKnQG40WZDmdSsCucjKYqt92PoJfIJHPqFNMS8J_HtMlrjFCZLpNvUGDdHJHwgCyDc8lQ_WTaPweyPZxvi831oQzAxz_UENod_g_KvcwEJq5vyYZgLS4-O6wTAok4c7qBpx/s320/image034-788886.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1054" DrawAspect="Content" ObjectID="_1517141257"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
After training the model I’ll be scoring the model to come up with predictions (Production order priorities)<o:p></o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 71.75pt;" valign="top" width="144"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Evaluate model<o:p></o:p></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 395.75pt;" valign="top" width="792"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-vWDlEMT9KtredM4rqnxYYFHLnm_MePOECf1O-SEyCR_JA39zxtBcsp5uNCm-VjaX7A0e2vh6OZOh0rG3OtNZf3sB1Rp0xkjkCqm8E4ZmE-w3usOoONYWmXIXyZ-g6FQyOYUZOPUFmZx3/s1600/image035-790811.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033534048630162" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-vWDlEMT9KtredM4rqnxYYFHLnm_MePOECf1O-SEyCR_JA39zxtBcsp5uNCm-VjaX7A0e2vh6OZOh0rG3OtNZf3sB1Rp0xkjkCqm8E4ZmE-w3usOoONYWmXIXyZ-g6FQyOYUZOPUFmZx3/s320/image035-790811.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1055" DrawAspect="Content" ObjectID="_1517141258"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Once model has been scored I can also check the accuracy of my prediction in case I knew actuals. Typically, evaluation is done after prediction as time passes and we know the actuals<o:p></o:p></div>
</td> </tr>
</tbody> </table>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Once I run the model I can then visualize the results<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<i>Visualize<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFjSD5fTaFn5Ke1-1kn6UBv4jAmj8FoeahTW_ug22Y2ES-dMyl80DcvYSjZZLSy3Tm7IvviTKxBJF8va50V54IWx8zXPAddIvIbTeGrS9WcbYsGZiNRTOps6UmCKhDq3wYdk1dBaIfYZFt/s1600/image036-793370.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033540596541474" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFjSD5fTaFn5Ke1-1kn6UBv4jAmj8FoeahTW_ug22Y2ES-dMyl80DcvYSjZZLSy3Tm7IvviTKxBJF8va50V54IWx8zXPAddIvIbTeGrS9WcbYsGZiNRTOps6UmCKhDq3wYdk1dBaIfYZFt/s320/image036-793370.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
The result will be presented in Scored labels column as shown below<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Result<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIW2UxsYPevzFhxOoObCCj-pudppOhf6m613INZt1M3oxiKwv8gvA4_vVEAotCccv02jl8Ft6EejWhy5OsfCS1I7jVxU3LdVLFiU9gW2iBQiB3X0mgYvuYP859PBuwEZ2GBf7IVRDRSPEn/s1600/image037-795579.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033555924343154" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIW2UxsYPevzFhxOoObCCj-pudppOhf6m613INZt1M3oxiKwv8gvA4_vVEAotCccv02jl8Ft6EejWhy5OsfCS1I7jVxU3LdVLFiU9gW2iBQiB3X0mgYvuYP859PBuwEZ2GBf7IVRDRSPEn/s320/image037-795579.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
The interesting thing here is that not only the system gives me predictions of Priorities, but also how probable the prediction is for each Priority class, please notice Scored probabilities for Class “Low”, ”Medium” and ”High” with values [0 – 1]<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Now as we have historical data and predictions data we can visualize this data using Business intelligence tools and services like Microsoft Excel Power View and Microsoft Power BI <o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Business Intelligence<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVtx7iWKLm-5bSdkxbWEYIv23KLn7UyGfAHvZagXMZmPUCEpFK0bvnMG0-BQzMu_BQmOpyoZydnN0_-psXXNTo6RAmIZk8sPlqr8OToM-xTTy-7bPts45KjMsBV1q1k51x5kpEOeVg0Fto/s1600/image038-797734.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033563507992882" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVtx7iWKLm-5bSdkxbWEYIv23KLn7UyGfAHvZagXMZmPUCEpFK0bvnMG0-BQzMu_BQmOpyoZydnN0_-psXXNTo6RAmIZk8sPlqr8OToM-xTTy-7bPts45KjMsBV1q1k51x5kpEOeVg0Fto/s320/image038-797734.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Next algorithm in line is Clustering algorithm <o:p></o:p></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
<b>Clustering<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
In this experiment we’ll consider Manufacturing environment and Machine Log dataset generated by equipment/machinery on the shop floor like in the previous experiment. In fact, this time the information I have describes OEE data (Overall Equipment Efficiency) for number of successful runs, failures, power outages, maintenance requests from machines. The goal will be to group machines into 2 groups: machines performing well and machines potentially in a need of a maintenance. By other words, we’ll implement a simple predictive maintenance model<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Excel spreadsheet with the data for Clustering experiment looks like below<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Dataset<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHW7zBPNyhoyFP5jVHBkaDdvnYZ914uKkLc-YCB09hBQxWB41PfvTFGsAOIqRY34FtvrWrTtEi1NrNUB6KfMp-xHTXvk0Fai9VtKi-9QMNsZXl1ZnLkw9JdSJpYZv9J6HMHMzAO3H32tKF/s1600/image039-799656.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033572577463554" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHW7zBPNyhoyFP5jVHBkaDdvnYZ914uKkLc-YCB09hBQxWB41PfvTFGsAOIqRY34FtvrWrTtEi1NrNUB6KfMp-xHTXvk0Fai9VtKi-9QMNsZXl1ZnLkw9JdSJpYZv9J6HMHMzAO3H32tKF/s320/image039-799656.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
To simplify the data representation, I will aggregate the values by using Microsoft Excel Power Pivot<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgCEhIM9h1oUiyfMwZSnTZD-nBgUvhujcCt0P3uZUoT4_1dI3WgelxFSlN-6BlI7YXIWVOgHJX-14xtwKagb6a8f750dJRjhI2G_wZ8fbZuIZHRkKioXDChs6zKzX64jlCDb2WG-7nSEDW/s1600/image040-701639.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033580713048658" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgCEhIM9h1oUiyfMwZSnTZD-nBgUvhujcCt0P3uZUoT4_1dI3WgelxFSlN-6BlI7YXIWVOgHJX-14xtwKagb6a8f750dJRjhI2G_wZ8fbZuIZHRkKioXDChs6zKzX64jlCDb2WG-7nSEDW/s320/image040-701639.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
I highlighted with Green the values for the number of successful runs per machine, and with Red – the number of failed runs per machine. The challenge I have is that by looking at this data it is hard to say which machines are performing well and which are performing not well, especially if you’d be looking at the huge dataset. In fact, what I know is that I want 2 groups (2 clusters) of machines as the result – “Well performing” machines and “Non-well performing” machines. The trick is in what meaningful variables I’ll use for this experiment – they will define what clusters I’m going to get as the result <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
The model I built in Microsoft Azure Machine Learning Studio for Clustering experiment looks like below<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Model<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwunYfvNPE_Adl5LTCU4CtJut1x2fhTQFl0il3UDxVbkJ0SeeTIc8rOaSAGzZwO4DrqrYjXEJ4wKGFmwFEoOnYEZO-ftS_xNgzfsHqVPCLBahQkylIzAl1zpHd5x3mv6liULDjeEpHNEVf/s1600/image041-703740.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033586678558162" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwunYfvNPE_Adl5LTCU4CtJut1x2fhTQFl0il3UDxVbkJ0SeeTIc8rOaSAGzZwO4DrqrYjXEJ4wKGFmwFEoOnYEZO-ftS_xNgzfsHqVPCLBahQkylIzAl1zpHd5x3mv6liULDjeEpHNEVf/s320/image041-703740.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Here’s the list of building blocks with explanations<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none;"> <tbody>
<tr> <td style="border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.25pt;" valign="top" width="135"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Element<o:p></o:p></div>
</td> <td style="border-left: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 400.25pt;" valign="top" width="801"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Purpose<o:p></o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.25pt;" valign="top" width="135"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Dataset<o:p></o:p></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 400.25pt;" valign="top" width="801"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzfLucwvt1goqDJCFV-WISzH9mdQuZ11i49GO8inVLCj7yAbQ2yXLB_436p9p-HdB5QbksEXm6EqFNnW1-0AiEL0sSHME6qYCIcEEjmk9B69SeiGeds2B7pcXDwcDa_u9ylDrJDq1oNdDw/s1600/image042-705525.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033594752907058" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzfLucwvt1goqDJCFV-WISzH9mdQuZ11i49GO8inVLCj7yAbQ2yXLB_436p9p-HdB5QbksEXm6EqFNnW1-0AiEL0sSHME6qYCIcEEjmk9B69SeiGeds2B7pcXDwcDa_u9ylDrJDq1oNdDw/s320/image042-705525.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1062" DrawAspect="Content" ObjectID="_1517141259"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Excel spreadsheet with historical OEE data<o:p></o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.25pt;" valign="top" width="135"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Project columns <o:p></o:p></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 400.25pt;" valign="top" width="801"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEianAQ6nejhKII3k6b6n8UyEJZr69gL1wxLQYM19MRfNx3MhDeSxrpaQla4AYX5U_Kv2B9CJOjPj4Xafk1OE2ual9C5RZvQu9Th74BGcUkqAtuDTaKN6zaUsZj7MsTDQv26NdBZ8ay_g7ec/s1600/image043-707567.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033606125053858" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEianAQ6nejhKII3k6b6n8UyEJZr69gL1wxLQYM19MRfNx3MhDeSxrpaQla4AYX5U_Kv2B9CJOjPj4Xafk1OE2ual9C5RZvQu9Th74BGcUkqAtuDTaKN6zaUsZj7MsTDQv26NdBZ8ay_g7ec/s320/image043-707567.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1063" DrawAspect="Content" ObjectID="_1517141260"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<!--[if gte vml 1]><v:shape id="_x0000_i1064" type="#_x0000_t75" style='width:468.5pt;height:231pt' o:ole=""> <v:imagedata src="cid:image044.png@01D168CD.A059F750" o:title="" /> </v:shape><![endif]--><![if !vml]><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh31jTQll4-Fege9J3m5knZPMyb4HJf5P3GMjFnJHRc2P12uftSChtjEOaq74QgVWcaPPnSXSA6D8GJHUG3-0DOgI1L2N1ZPvDjlq7l6okd0FU7tdkLFkVW6yj5-E1LqlJpCAnGEXrPcIF2/s1600/image045-709431.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033614573606930" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh31jTQll4-Fege9J3m5knZPMyb4HJf5P3GMjFnJHRc2P12uftSChtjEOaq74QgVWcaPPnSXSA6D8GJHUG3-0DOgI1L2N1ZPvDjlq7l6okd0FU7tdkLFkVW6yj5-E1LqlJpCAnGEXrPcIF2/s320/image045-709431.jpg" /></a><![endif]><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1064" DrawAspect="Content" ObjectID="_1517141261"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Please note that I specified meaningful variables (Machine, Success, Failure) which in my opinion correlate, by other words interdependent, for training the system. What it really means is that I expect Success-Failure ratio per machine to greatly help me group machines into “Well performing” machines and “Non-well performing” machines <o:p> </o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.25pt;" valign="top" width="135"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
K-Means Clustering<o:p></o:p></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 400.25pt;" valign="top" width="801"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLRoQEYd2V4OHgTanMKe23nZmYfZ6f4h53ILzkj4u2U8Ie8shUMPkPt6tKji4eMvrXiqyTu1kMA6UAiZZV2An_HfWvPrdeX-MTM9McMb0nPO7CNXHhH1hyuclp0twDhL0FcyJUGbUwNrAy/s1600/image046-711290.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033617455056610" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLRoQEYd2V4OHgTanMKe23nZmYfZ6f4h53ILzkj4u2U8Ie8shUMPkPt6tKji4eMvrXiqyTu1kMA6UAiZZV2An_HfWvPrdeX-MTM9McMb0nPO7CNXHhH1hyuclp0twDhL0FcyJUGbUwNrAy/s320/image046-711290.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1065" DrawAspect="Content" ObjectID="_1517141262"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Please note that I’m using a K-Means Clustering algorithm to group the data into 2 clusters (Number of centroids = 2) in accordance with set up correlation of meaningful variables<o:p></o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.25pt;" valign="top" width="135"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Train Clustering model<o:p></o:p></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 400.25pt;" valign="top" width="801"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEoRK1FFzdWJnRDyL6wYSsRYxU4-gVdZeUz3ozl02j_rO55I-66HeHmCUHKr0YVFHLigV6-ABjtLcnaYnCUFlAbUKzb5IZhALn1vHQsM5f8fMSJgFxFu3FGSbjuiC0Tmus08mvpnx6ocXs/s1600/image047-713520.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033632955430018" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEoRK1FFzdWJnRDyL6wYSsRYxU4-gVdZeUz3ozl02j_rO55I-66HeHmCUHKr0YVFHLigV6-ABjtLcnaYnCUFlAbUKzb5IZhALn1vHQsM5f8fMSJgFxFu3FGSbjuiC0Tmus08mvpnx6ocXs/s320/image047-713520.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1066" DrawAspect="Content" ObjectID="_1517141263"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<!--[if gte vml 1]><v:shape id="_x0000_i1067" type="#_x0000_t75" style='width:468.5pt;height:226pt' o:ole=""> <v:imagedata src="cid:image048.png@01D168CD.A059F750" o:title="" /> </v:shape><![endif]--><![if !vml]><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO0XWqsP2SqWWaiZCOopHMvbBT5JNKtjyOt8GH0kB3K4BM0dFcQ26Bc6FsDLL4hRZK-lctzZ2Is5_5HlrD0oMK3cwZ31hRu_Sof2FVBew0LIxYKQY2PLxsFm9dXbt-5k4rwtfqvS_eXLG6/s1600/image049-715910.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033639482065714" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO0XWqsP2SqWWaiZCOopHMvbBT5JNKtjyOt8GH0kB3K4BM0dFcQ26Bc6FsDLL4hRZK-lctzZ2Is5_5HlrD0oMK3cwZ31hRu_Sof2FVBew0LIxYKQY2PLxsFm9dXbt-5k4rwtfqvS_eXLG6/s320/image049-715910.jpg" /></a><![endif]><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1067" DrawAspect="Content" ObjectID="_1517141264"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Please note that I explicitly specify what data will participate in Clustering process (Machine, Success, Failure) during training of the model<o:p></o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.25pt;" valign="top" width="135"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Assign to Clusters<o:p></o:p></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 400.25pt;" valign="top" width="801"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHT79iD10hAD5ad6wgn-O8v2utllZGoiv4pQZYsIARni2VCB2aqkpyIGtriJma8PoZhuPTqIwbmSh1AVl6ZGJIOgjxEBkuuwfGpRd4Op6NRDv58AlH5ozc7bXrsPNkZCCurmkaD83C6iaF/s1600/image050-717946.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033647364225234" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHT79iD10hAD5ad6wgn-O8v2utllZGoiv4pQZYsIARni2VCB2aqkpyIGtriJma8PoZhuPTqIwbmSh1AVl6ZGJIOgjxEBkuuwfGpRd4Op6NRDv58AlH5ozc7bXrsPNkZCCurmkaD83C6iaF/s320/image050-717946.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1068" DrawAspect="Content" ObjectID="_1517141266"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<!--[if gte vml 1]><v:shape id="_x0000_i1069" type="#_x0000_t75" style='width:468pt;height:230.5pt' o:ole=""> <v:imagedata src="cid:image051.png@01D168CD.A059F750" o:title="" /> </v:shape><![endif]--><![if !vml]><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyV4lBwqZUEgZmMHUsx4HXY2mx7CPUH3Ul7REu2qrFeVZEusUf4mujN8Nph0dbc1tSDZC223zP-XcuqEWwO8hAJixGXJnZ6nFYasWBnoS_Wkj8ecqZH3h-tA5wQTk9MttI0O3gz7OazqnP/s1600/image052-720534.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033660535918114" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyV4lBwqZUEgZmMHUsx4HXY2mx7CPUH3Ul7REu2qrFeVZEusUf4mujN8Nph0dbc1tSDZC223zP-XcuqEWwO8hAJixGXJnZ6nFYasWBnoS_Wkj8ecqZH3h-tA5wQTk9MttI0O3gz7OazqnP/s320/image052-720534.jpg" /></a><![endif]><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1069" DrawAspect="Content" ObjectID="_1517141267"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Please note that the system will assign the data to groups (clusters) based on the meaningful variables (Machine, Success, Failure) <o:p></o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.25pt;" valign="top" width="135"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Resulting dataset<o:p></o:p></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 400.25pt;" valign="top" width="801"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitbU1a_W6jJZXTxAyg9kNPSbYxq-X3oLBHFNzSoQjhO39ZJcVB4XhG31ALnUDvLJasRGzf-kxhbb1aqiUNM6x6uh5-NSL2t5kd5_2hKNapT2l1Ae2AcFMyeKxoFMQIon3NdGKHNvnTbcvc/s1600/image053-723096.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033670220675250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitbU1a_W6jJZXTxAyg9kNPSbYxq-X3oLBHFNzSoQjhO39ZJcVB4XhG31ALnUDvLJasRGzf-kxhbb1aqiUNM6x6uh5-NSL2t5kd5_2hKNapT2l1Ae2AcFMyeKxoFMQIon3NdGKHNvnTbcvc/s320/image053-723096.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1070" DrawAspect="Content" ObjectID="_1517141268"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Once the result is obtained I’ll present it in a form of a separate dataset<o:p></o:p></div>
</td> </tr>
</tbody> </table>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
After I run Clustering experiment I’ll save the result as a separate dataset as shown below <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<i>Save as dataset<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7igqswvvpc6STDuELDT53ubQWQs8SL-JNnTCg6QiKRlP_ChYdB9QpP2kKhTpL4TW-ZJ82-6lstFUAhIap9wNAy-BqAl5vYcCiSnG2RJJJIJeh6Edg-qh7KcVsrp2_m0gmV0TP0YG0-xg7/s1600/image054-725208.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033678450777298" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7igqswvvpc6STDuELDT53ubQWQs8SL-JNnTCg6QiKRlP_ChYdB9QpP2kKhTpL4TW-ZJ82-6lstFUAhIap9wNAy-BqAl5vYcCiSnG2RJJJIJeh6Edg-qh7KcVsrp2_m0gmV0TP0YG0-xg7/s320/image054-725208.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<i>Save output as a new dataset<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSKrvkW_3pWWW7yBJyTnYA_MfxTDvDb-lAZ37MMtON1D1k-708TUmgDL_Bb4jOwhRjSDL72IUHpfEvRjqjbuXkWr-IZ0TYDeuA5Zx3Qv11feVj6N9poPfJnow_uzdtBHVaQSmI_5NSPQc2/s1600/image055-728607.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033697708504690" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSKrvkW_3pWWW7yBJyTnYA_MfxTDvDb-lAZ37MMtON1D1k-708TUmgDL_Bb4jOwhRjSDL72IUHpfEvRjqjbuXkWr-IZ0TYDeuA5Zx3Qv11feVj6N9poPfJnow_uzdtBHVaQSmI_5NSPQc2/s320/image055-728607.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Now I can visualize this newly created dataset as shown below<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Visualize<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCD9hwrQwg3O0ayWA0_wC_nRYzEwL0XAfbTQ35q6cxermZz9X93cudL572Admqd13hzhKopUVwN9AGdETzQw4xQMElLtmwA7Q6EoTiVvMjhl3j8PBw7qFILooxyP744UPyorp8jykgp65d/s1600/image056-731138.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033704672615858" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCD9hwrQwg3O0ayWA0_wC_nRYzEwL0XAfbTQ35q6cxermZz9X93cudL572Admqd13hzhKopUVwN9AGdETzQw4xQMElLtmwA7Q6EoTiVvMjhl3j8PBw7qFILooxyP744UPyorp8jykgp65d/s320/image056-731138.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
The result will be presented in Assignments column as shown below<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Result<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK1utNv2ycBpK9dE75-RupfHGyWJwHPU3598KNJXj4XoMI22NAn8o-rIXt4qBGSgKQZlIsNBnovLUU09HoPiPqSPfnQ6S4suZStVhreL_xydDdnSS8ATuePaBlsY638fcbZ8ETW6nZ1mX8/s1600/image057-733545.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033715167576930" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK1utNv2ycBpK9dE75-RupfHGyWJwHPU3598KNJXj4XoMI22NAn8o-rIXt4qBGSgKQZlIsNBnovLUU09HoPiPqSPfnQ6S4suZStVhreL_xydDdnSS8ATuePaBlsY638fcbZ8ETW6nZ1mX8/s320/image057-733545.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Please note that the system is also providing me with how far my results stand from each other centered around groups center (Distance to cluster center) which represent the accuracy of the result. In case your results are highly dispersed you may want to consider introducing an additional cluster(s) for more accurate results if this makes sense in the context of the business task<o:p></o:p></div>
<div class="MsoNormal">
Now if we visualize obtained results in Excel the data makes a perfect sense. Thus machines grouped into Cluster 0 are “Well-performing” machines with a good Success-Failure ratio (X = (Success/Failure) > 1) and machines grouped into Cluster 1 are “Non-well performing” machines with a bad Success-Failure ration (X = (Success/Failure) < 1) <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<i>Performance analysis</i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ8xlNpkYX9Oaec86X97Z6GLFHg0kg3E_lmXL3NpF4MtH_Qtc25pWU-ODMHSdltkDEJDxU6pWn25kEPvTmQkkwSz15epOQnPj4V32Dhhkffl6Z1CynWlD_JNnBnsd1ZIAWEm0MdZEvAY_G/s1600/image058-735718.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033726668135650" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ8xlNpkYX9Oaec86X97Z6GLFHg0kg3E_lmXL3NpF4MtH_Qtc25pWU-ODMHSdltkDEJDxU6pWn25kEPvTmQkkwSz15epOQnPj4V32Dhhkffl6Z1CynWlD_JNnBnsd1ZIAWEm0MdZEvAY_G/s320/image058-735718.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
This provides a very meaningful insight into shop floor operations because now I know what machines will require a predictive maintenance and thus I can avoid costly machinery breakdowns<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Please note that while you are designing your experiment the system will assist you with warning if you are doing something wrong. For example, this is how one of warnings may look like if you forget to assign certain variables to a shape<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Logical exception<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8W_dIp-LJxtAkGBD7JPJJ-vTkN_TTmKRq3qhgc5rwHoDP-XPk6zAGWjC53NxcwW7OesHGeOaU8oiiJXva5cizl8AbK8IXhkWT3-PfVvsm0NhbJfPBbHVRg5mPTf3AlFHuwHmT-t-37p_8/s1600/image059-737991.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033732717268834" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8W_dIp-LJxtAkGBD7JPJJ-vTkN_TTmKRq3qhgc5rwHoDP-XPk6zAGWjC53NxcwW7OesHGeOaU8oiiJXva5cizl8AbK8IXhkWT3-PfVvsm0NhbJfPBbHVRg5mPTf3AlFHuwHmT-t-37p_8/s320/image059-737991.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
The last one in consideration today is Anomaly detection algorithm<o:p></o:p></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
<b>Anomaly detection<o:p></o:p></b></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
In this experiment we’ll consider Manufacturing environment and Operator Log dataset produced during shop floor operations. The dataset does look similar to Machine Log dataset used for Regression and Classification experiments. What I’m looking for in this dataset is Operator errors, for example, potentially registering an anomaly large and small quantities of products produced. Please note that I highlighted with Red one of Operator errors (Qty = -9999) which I’m going to catch with the help of Machine Learning Anomaly detection algorithm <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Excel spreadsheet with the data for Anomaly detection experiment looks like below<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Dataset<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOQpT27ALrkGg5mdoSeyf5MLQ2gDBZZ7vo8utga59pF04j3AjxyzXBFrMoP2mXzaxUKZKHCtFUN-Z55GPIqZnwxeSRF0oibSkcdboJM67UOBu1cMhvP9YKh3UlQLIqedCCWPlX22alvvNq/s1600/image060-740238.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033741201959730" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOQpT27ALrkGg5mdoSeyf5MLQ2gDBZZ7vo8utga59pF04j3AjxyzXBFrMoP2mXzaxUKZKHCtFUN-Z55GPIqZnwxeSRF0oibSkcdboJM67UOBu1cMhvP9YKh3UlQLIqedCCWPlX22alvvNq/s320/image060-740238.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
The model I built in Microsoft Azure Machine Learning Studio for Anomaly detection experiment looks like below<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Model<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyYN0rjo4OWUd71wOHem5mRjuqNQImDexWqpUcNsiHyhR86MLdhXg6NELPjuWaJzEan9dfFNEM3nZKs8J5PjxUIAbvdzlGzT_KveJEAx50qWmgajiJbFAWzevsfbWzzXRyNefIhxw3UPEx/s1600/image061-743152.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033756429715234" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyYN0rjo4OWUd71wOHem5mRjuqNQImDexWqpUcNsiHyhR86MLdhXg6NELPjuWaJzEan9dfFNEM3nZKs8J5PjxUIAbvdzlGzT_KveJEAx50qWmgajiJbFAWzevsfbWzzXRyNefIhxw3UPEx/s320/image061-743152.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Here’s the list of building blocks with explanations<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none;"> <tbody>
<tr> <td style="border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 53.75pt;" valign="top" width="108"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Element<o:p></o:p></div>
</td> <td style="border-left: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 413.75pt;" valign="top" width="828"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Purpose<o:p></o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 53.75pt;" valign="top" width="108"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Dataset<o:p></o:p></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 413.75pt;" valign="top" width="828"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXOzYyD1oifcyFS3fuJG2VDQF3eLEC38K_g14eNRvvHAAbYNyO-cDFTxdqq42um1AsdK4_TPX_ibUg4GeIXKugtGu_GhXz3XzteO3NNaLDei6fjybwMYZ-Vy8i91s8F8Qyd6iRLEa461p5/s1600/image062-745336.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033764326179730" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXOzYyD1oifcyFS3fuJG2VDQF3eLEC38K_g14eNRvvHAAbYNyO-cDFTxdqq42um1AsdK4_TPX_ibUg4GeIXKugtGu_GhXz3XzteO3NNaLDei6fjybwMYZ-Vy8i91s8F8Qyd6iRLEa461p5/s320/image062-745336.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1079" DrawAspect="Content" ObjectID="_1517141269"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Excel spreadsheet with historical operator data<o:p></o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 53.75pt;" valign="top" width="108"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Project column<o:p></o:p></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 413.75pt;" valign="top" width="828"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWf8LFxmancE1BK1UJypC0CaWry7gcILZ55-5jTWAq2nmVo8H3DQ7hF7ISjlKwlwbu4cnk2fSE25XtrfMBiKawi7MxgBEp_Z6oSSpJFt5ihZoHF9b5f1tUhZ8QbjxRu1trK91muCZQvvWk/s1600/image063-747580.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033777172784866" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWf8LFxmancE1BK1UJypC0CaWry7gcILZ55-5jTWAq2nmVo8H3DQ7hF7ISjlKwlwbu4cnk2fSE25XtrfMBiKawi7MxgBEp_Z6oSSpJFt5ihZoHF9b5f1tUhZ8QbjxRu1trK91muCZQvvWk/s320/image063-747580.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1080" DrawAspect="Content" ObjectID="_1517141270"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<!--[if gte vml 1]><v:shape id="_x0000_i1081" type="#_x0000_t75" style='width:467.5pt;height:229.5pt' o:ole=""> <v:imagedata src="cid:image064.png@01D168CD.A059F750" o:title="" /> </v:shape><![endif]--><![if !vml]><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkW6ai0uZdf3BO5x1XixdpcUqONaOAZZQqDtDvpArCN_PIhi1UtNmnSVAadz9_M0j46uhwdAj_0dWxKvtrkTo7-uo5ZIIH2hXKIQBa1WKCw1mf0Hs8xhUPGB9_8ah8aZhOPDwYn0Ei7prI/s1600/image065-750098.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033784789914002" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkW6ai0uZdf3BO5x1XixdpcUqONaOAZZQqDtDvpArCN_PIhi1UtNmnSVAadz9_M0j46uhwdAj_0dWxKvtrkTo7-uo5ZIIH2hXKIQBa1WKCw1mf0Hs8xhUPGB9_8ah8aZhOPDwYn0Ei7prI/s320/image065-750098.jpg" /></a><![endif]><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1081" DrawAspect="Content" ObjectID="_1517141271"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Please note that I specified meaningful variables (Customer, Product, Qty) which in my opinion correlate, by other words interdependent, for training the system <o:p></o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 53.75pt;" valign="top" width="108"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Split data<o:p></o:p></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 413.75pt;" valign="top" width="828"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5jO4VOa_qoxY17-4TeLS4SMaf3_1tjCKA7busOKHhqnMgZEhEA6ZAbGg5DRdhBQqjuBBZUgLhRESYBWiRT3IkhoANF-c3tzekzQ7f4L9asyO9oWXR5WOgUjtNQncR-aUSxeIfBGZMncxW/s1600/image066-752268.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033793254546130" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5jO4VOa_qoxY17-4TeLS4SMaf3_1tjCKA7busOKHhqnMgZEhEA6ZAbGg5DRdhBQqjuBBZUgLhRESYBWiRT3IkhoANF-c3tzekzQ7f4L9asyO9oWXR5WOgUjtNQncR-aUSxeIfBGZMncxW/s320/image066-752268.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1082" DrawAspect="Content" ObjectID="_1517141272"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Please note that I use 84% of the data to train the system and the rest of 16% of the data (the last 5 rows highlighted with green) for analysis<o:p></o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 53.75pt;" valign="top" width="108"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
One-class support vector machine<o:p></o:p></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 413.75pt;" valign="top" width="828"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9_w33SSkoOLMw0SU2l1idR4VEX17gELozvCdcTaId0O6hqO_-ir9PVR6g0ZM5MfdqvfvNEbFV4g0QXXxKY1SK2Cy4tZe_lnSVE9EWxErTdDD7hgtFZQ1dHK0weia3YCGAIQdbsyF66jTl/s1600/image067-754809.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033806498552018" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9_w33SSkoOLMw0SU2l1idR4VEX17gELozvCdcTaId0O6hqO_-ir9PVR6g0ZM5MfdqvfvNEbFV4g0QXXxKY1SK2Cy4tZe_lnSVE9EWxErTdDD7hgtFZQ1dHK0weia3YCGAIQdbsyF66jTl/s320/image067-754809.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1083" DrawAspect="Content" ObjectID="_1517141273"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Please note that I’m using a One-class support vector machine algorithm to analyze the data for anomalies<o:p></o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 53.75pt;" valign="top" width="108"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Train anomaly detection model<o:p></o:p></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 413.75pt;" valign="top" width="828"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwSeflDn75dCp2EXldJaMFdbIy_I8ZsC7zdw9JdqFhaQfWRQylbxTgt-wkoaalyWGsdw6lyFGvm9UiP6MzKGI35hmgdWGp66yATS69RucjqERy5Tr2gE4v3v8ulovSqauybVVXnMyHaoDr/s1600/image068-757193.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033815462090386" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwSeflDn75dCp2EXldJaMFdbIy_I8ZsC7zdw9JdqFhaQfWRQylbxTgt-wkoaalyWGsdw6lyFGvm9UiP6MzKGI35hmgdWGp66yATS69RucjqERy5Tr2gE4v3v8ulovSqauybVVXnMyHaoDr/s320/image068-757193.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1084" DrawAspect="Content" ObjectID="_1517141274"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
The model will be trained on the historical data <o:p></o:p></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 53.75pt;" valign="top" width="108"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
Score model<o:p></o:p></div>
</td> <td style="border-bottom: solid 1.0pt; border-left: none; border-right: solid 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; width: 413.75pt;" valign="top" width="828"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPJGzFr-vy8E2oe5rEjLxDQ3uI7GRVCPXgtn_rm4sOx9krDrDdxvjQYymVVuRZNlCeW98F5ejxq_FUUa5f8uZEXGIEbF8406tsoWUHFTCKV6jU1sraD6vAtX1krxC3rH3PAXmCEruSZqAO/s1600/image069-759883.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033827910285186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPJGzFr-vy8E2oe5rEjLxDQ3uI7GRVCPXgtn_rm4sOx9krDrDdxvjQYymVVuRZNlCeW98F5ejxq_FUUa5f8uZEXGIEbF8406tsoWUHFTCKV6jU1sraD6vAtX1krxC3rH3PAXmCEruSZqAO/s320/image069-759883.png" /></a><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="PBrush" ShapeID="_x0000_i1085" DrawAspect="Content" ObjectID="_1517141275"> </o:OLEObject> </xml><![endif]--><o:p></o:p></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
After training the model I’ll be scoring the model to come up with caught anomalies if any detected<o:p></o:p></div>
</td> </tr>
</tbody> </table>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Once I run the model I can then visualize the results<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<i>Visualize</i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwja3ulLlwo_B4lnuu41cY2uWL3X4PWzHUkAkJyOkUEuFCugqMQ8GtX-aJ34RmnA0-4MvSdykS6DVYNkj3qKMAfSUmQm0_SkyzUGBQfe7MU7Tz1f7TI2FZKJ1GenPc250_OgdtXyF0c9I5/s1600/image070-761700.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033835904231682" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwja3ulLlwo_B4lnuu41cY2uWL3X4PWzHUkAkJyOkUEuFCugqMQ8GtX-aJ34RmnA0-4MvSdykS6DVYNkj3qKMAfSUmQm0_SkyzUGBQfe7MU7Tz1f7TI2FZKJ1GenPc250_OgdtXyF0c9I5/s320/image070-761700.png" /></a><i><o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
The result will be presented in Scored labels column as shown below<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Result<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKWU4TD9DFpdPKFsayLaHyhcyyFUbW5r43kjv5QhdYhN_Rr1jqFA8nRphRfgwJJvHx-DjgHxlCbTjfZ9ryAcwxsnhznDvmU-GGe-33yGt_j3oXnfyc7DwZW9jh-ElPRo6ib3yF-5Lwv8PD/s1600/image071-764709.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033849463068018" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKWU4TD9DFpdPKFsayLaHyhcyyFUbW5r43kjv5QhdYhN_Rr1jqFA8nRphRfgwJJvHx-DjgHxlCbTjfZ9ryAcwxsnhznDvmU-GGe-33yGt_j3oXnfyc7DwZW9jh-ElPRo6ib3yF-5Lwv8PD/s320/image071-764709.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Please note that Qty = -9999 anomaly was detected as Scored labels column value for that row is 1. Also the system provides a relative probability for this to be an anomaly in Scored probability column<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Please note that while you are designing your experiment the system will assist you with warning if you are doing something wrong. For example, this is how one of warnings may look like if you try to assign a variable of a wrong type to a shape<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Logical exception<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXSQ3GdaywMwkvRVSlL3xYQYBwEFU8q-QNT5DOYuyP9vykET0SKoZJqKeQP2ysnBhh12MbS1ffPRDDxlGaNsSOezgyFXLLv8G_nO310jEYRFiKTE3wZ9nxr5F4v5W9QXZS7O9H6HSqSLWo/s1600/image072-767138.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033858860983250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXSQ3GdaywMwkvRVSlL3xYQYBwEFU8q-QNT5DOYuyP9vykET0SKoZJqKeQP2ysnBhh12MbS1ffPRDDxlGaNsSOezgyFXLLv8G_nO310jEYRFiKTE3wZ9nxr5F4v5W9QXZS7O9H6HSqSLWo/s320/image072-767138.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
We reviewed 4 categories of Machine Learning algorithms now<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
The next step will be to think about how do we practically consume Microsoft Azure Machine Learning service from the cloud. Luckily it is very easy to convert a Machine Learning experiment into a Web Service as shown below<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Web Service (Regression)<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsR7x2_qHX-XkIYcLnji6_R2O0tk7TlTEvUdhQEIFdMEIEaQXjTdd6IQr_d5_ulLYAjlUH55P_FA_F3pdxJZGMFety1r9cKlEm_O832E7jcb2MIA8bmIY8T8WyCpmbtGzhcNs1jIJj0qlW/s1600/image073-769399.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033865733683170" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsR7x2_qHX-XkIYcLnji6_R2O0tk7TlTEvUdhQEIFdMEIEaQXjTdd6IQr_d5_ulLYAjlUH55P_FA_F3pdxJZGMFety1r9cKlEm_O832E7jcb2MIA8bmIY8T8WyCpmbtGzhcNs1jIJj0qlW/s320/image073-769399.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
A brand-new experiment will be created (Predictive Web Service)<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Experiments<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<b><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9mTz-KAIy9Yt-ZowAuSczzL3reQfoKc_wUl-96teBZQmJdtceNQlzVuOSoNAmsNT_HM1ZjxFLeTMsiaU0NBRMSdESpxDK-KpfOINwKn2VVgIAiWRbM0xJttWyHy7BZiRFEeSsxGfGJIlB/s1600/image074-771571.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033880287404642" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9mTz-KAIy9Yt-ZowAuSczzL3reQfoKc_wUl-96teBZQmJdtceNQlzVuOSoNAmsNT_HM1ZjxFLeTMsiaU0NBRMSdESpxDK-KpfOINwKn2VVgIAiWRbM0xJttWyHy7BZiRFEeSsxGfGJIlB/s320/image074-771571.jpg" /></a><o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<i>Web Services<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5YpBDfFeMdMBNOiZcCSoIqpIKmgMEg5PEgaBfBesqD0zHznf1F2mclCHV4N4ws0MCF3b6SkFwmxjU1lNJtVRZ73xv9p04weJOz-HWpTjeSfAl1Or6MNx8omxsceJdxqfcycnEHKwBL9C2/s1600/image075-773727.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033887124018418" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5YpBDfFeMdMBNOiZcCSoIqpIKmgMEg5PEgaBfBesqD0zHznf1F2mclCHV4N4ws0MCF3b6SkFwmxjU1lNJtVRZ73xv9p04weJOz-HWpTjeSfAl1Or6MNx8omxsceJdxqfcycnEHKwBL9C2/s320/image075-773727.jpg" /></a><o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
You can switch to Web Service experiment mode to see Web Service Input and Web Service Output ports<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Experiment<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQY6G5XM2cL6cO7erLbj6H4Z0JzzTzJcZXdVIHp0u-ovuPX5Yo6bNq4-iFpYxCbYR89IciMm8y0VgM_HSJ4rT1-uTiRIHrNzLQusydEyg8bTpagR-UHipsDFxFLn8xX5f7XA92FlSaxQ_M/s1600/image076-776056.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033901664995410" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQY6G5XM2cL6cO7erLbj6H4Z0JzzTzJcZXdVIHp0u-ovuPX5Yo6bNq4-iFpYxCbYR89IciMm8y0VgM_HSJ4rT1-uTiRIHrNzLQusydEyg8bTpagR-UHipsDFxFLn8xX5f7XA92FlSaxQ_M/s320/image076-776056.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Web Service Input Port<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO-rUTP58b424fnLiULlUInnhcsjZKskNgw5-nPtR8w57sBXqiBl6CrjEgBczmCXCXYFAm5GOUcKcleLYn4qDipWYYLk0f0yDvmdggkXNyXsMxDSJyEEKXPKjPoByzcXiXlq1HnuTOj6Ut/s1600/image077-778692.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033910581767314" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO-rUTP58b424fnLiULlUInnhcsjZKskNgw5-nPtR8w57sBXqiBl6CrjEgBczmCXCXYFAm5GOUcKcleLYn4qDipWYYLk0f0yDvmdggkXNyXsMxDSJyEEKXPKjPoByzcXiXlq1HnuTOj6Ut/s320/image077-778692.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Web Service Output Port<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4kq89nH4EDEcgz2A7n7Y2FUO_Y1xfEnrRzxlR5QTJ9-auhzWeBUrG4gXfANMeA1KmVxezXpALRA1vDOx5jbcroawWrh-eOcWsd0dzH08-WMIFOx0uakLERzsydHEw1ZN9Ykvd5MpMP2nX/s1600/image078-780868.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033918856251714" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4kq89nH4EDEcgz2A7n7Y2FUO_Y1xfEnrRzxlR5QTJ9-auhzWeBUrG4gXfANMeA1KmVxezXpALRA1vDOx5jbcroawWrh-eOcWsd0dzH08-WMIFOx0uakLERzsydHEw1ZN9Ykvd5MpMP2nX/s320/image078-780868.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
On the dashboard you can find associated technical details about how to invoke Web Service as well as try it out (Test)<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Dashboard<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdb7r_lsnKiHEi5rEYiyQlCbidVaetfMW2uKx7hoNeft9ZlXCubhup_g7lnhFVvVVg7GfCIHEKuooVYtLX8f1N9GmfnxMZnee2lmBClu76yGuQCY9mnFNtzwC05QGqQn5U8dgEpVowLjsC/s1600/image079-782941.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033927024731138" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdb7r_lsnKiHEi5rEYiyQlCbidVaetfMW2uKx7hoNeft9ZlXCubhup_g7lnhFVvVVg7GfCIHEKuooVYtLX8f1N9GmfnxMZnee2lmBClu76yGuQCY9mnFNtzwC05QGqQn5U8dgEpVowLjsC/s320/image079-782941.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>REQUEST/RESPONSE<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUGy0cIietywJ-3INK4gmPhCjIdBFpqjm7iZEHv8agqA7uNrYnzToHKzb87LVYH1z0Wq9uKx0DR9kEpREe3nJEQ6_mpIDs-tlKNtJ0qyg2I84aMi0oom5H6iZWiGgYnKXRzNAVbSlcmJ82/s1600/image080-785016.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033935201381778" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUGy0cIietywJ-3INK4gmPhCjIdBFpqjm7iZEHv8agqA7uNrYnzToHKzb87LVYH1z0Wq9uKx0DR9kEpREe3nJEQ6_mpIDs-tlKNtJ0qyg2I84aMi0oom5H6iZWiGgYnKXRzNAVbSlcmJ82/s320/image080-785016.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Request URI (POST):</i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://ussouthcentral.services.azureml.net/workspaces/942addd6f90b4b4e9c27990c45a5dd6a/services/526fc0cacbf94379a06e2be99497092f/execute?api-version=2.0&details=true"> <span style="font-family: "courier new"; font-size: 10.0pt; line-height: 106%;">https://ussouthcentral.services.azureml.net/workspaces/942addd6f90b4b4e9c27990c45a5dd6a/services/526fc0cacbf94379a06e2be99497092f/execute?api-version=2.0&details=true</span></a><code><span style="color: #666666; font-size: 10.0pt; line-height: 106%;"> </span></code> <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Sample request will look like below<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Sample request<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none;"> <tbody>
<tr> <td style="border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 467.5pt;" valign="top" width="935"><div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;">{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "Inputs": {<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "input1": {<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "ColumnNames": [<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "Order",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "Product",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "Qty",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "Color",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "Size",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "Batch",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "Serial",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "TransDate",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "Machine"<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> ],<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "Values": [<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> [<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "value",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "value",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "0",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "value",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "value",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "value",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "value",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "value"<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> ],<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> [<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "value",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "value",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "0",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "value",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "value",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "value",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "value",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "value"<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> ]<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> ]<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> }<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> },<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "GlobalParameters": {}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;">}</span><o:p></o:p></div>
</td> </tr>
</tbody> </table>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Please note that all data elements we manipulated with are available as a part of the message format<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Sample response looks like below<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Sample response<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none;"> <tbody>
<tr> <td style="border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 467.5pt;" valign="top" width="935"><div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;">{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "Results": {<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "output1": {<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "type": "DataTable",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "value": {<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "ColumnNames": [<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "Product",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "Qty",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "Color",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "TransDate",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "Machine",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> <span style="background: yellow; mso-highlight: yellow;">"Scored Labels"</span><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> ],<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "ColumnTypes": [<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "String",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "Numeric",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "String",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "Object",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "String",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> <span style="background: yellow; mso-highlight: yellow;"> "Numeric"</span><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> ],<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "Values": [<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> [<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "value",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "0",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "value",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "value",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "0"<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> ],<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> [<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "value",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "0",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "value",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "value",<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> "0"<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> ]<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> ]<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> }<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> }<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;"> }<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 10.0pt;">}</span><o:p></o:p></div>
</td> </tr>
</tbody> </table>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
We will definitely be interested in working with the result represented in Scored labels column <o:p></o:p></div>
<div class="MsoNormal">
When Machine Learning experiment (as a service) is consumed via Web Service you will use Web Service requests and Web Service responses to send and receive messages as it was explained above<o:p></o:p></div>
<div class="MsoNormal">
Below is the sample app code on how to consume Machine Learning experiment (as a service) in .NET<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<i>Sample code<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none;"> <tbody>
<tr> <td style="border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 467.5pt;" valign="top" width="935"><div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">// This code requires the Nuget package Microsoft.AspNet.WebApi.Client to be installed.<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">// Instructions for doing this in Visual Studio:<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">// Tools -> Nuget Package Manager -> Package Manager Console<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">// Install-Package Microsoft.AspNet.WebApi.Client<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">using System;<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">using System.Collections.Generic;<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">using System.IO;<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">using System.Net.Http;<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">using System.Net.Http.Formatting;<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">using System.Net.Http.Headers;<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">using System.Text;<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">using System.Threading.Tasks;<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">namespace CallRequestResponseService<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">{<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> public class StringTable<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> {<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> public string[] ColumnNames { get; set; }<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> public string[,] Values { get; set; }<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> }<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> class Program<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> {<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> static void Main(string[] args)<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> {<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> InvokeRequestResponseService().Wait();<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> }<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> static async Task InvokeRequestResponseService()<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> {<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> using (var client = new HttpClient())<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> {<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> var scoreRequest = new<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> {<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> Inputs = new Dictionary<string, StringTable> () { <o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> { <o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> "input1", <o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> new StringTable() <o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> {<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> ColumnNames = new string[] {"Order", "Product", "Qty", "Color", "Size", "Batch", "Serial", "TransDate", "Machine"},<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> Values = new string[,] { { "value", "value", "0", "value", "value", "value", "value", "", "value" }, { "value", "value", "0", "value", "value", "value", "value", "", "value" }, }<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> }<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> },<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> },<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> GlobalParameters = new Dictionary<string, string>() {<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">}<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> };<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> <span style="background: yellow; mso-highlight: yellow;">const string apiKey = "abc123"; // Replace this with the API key for the web service</span><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue( "Bearer", apiKey);<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> <span style="background: yellow; mso-highlight: yellow;">client.BaseAddress = new Uri("https://ussouthcentral.services.azureml.net/workspaces/942addd6f90b4b4e9c27990c45a5dd6a/services/526fc0cacbf94379a06e2be99497092f/execute?api-version=2.0&details=true");</span><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> // WARNING: The 'await' statement below can result in a deadlock if you are calling this code from the UI thread of an ASP.Net application.<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> // One way to address this would be to call ConfigureAwait(false) so that the execution does not attempt to resume on the original context.<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> // For instance, replace code such as:<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> // result = await DoSomeTask()<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> // with the following:<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> // result = await DoSomeTask().ConfigureAwait(false)<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> HttpResponseMessage response = await client.PostAsJsonAsync("", scoreRequest);<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> if (response.IsSuccessStatusCode)<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> {<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> string result = await response.Content.ReadAsStringAsync();<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> Console.WriteLine("Result: {0}", result);<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> }<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> else<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> {<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> Console.WriteLine(string.Format("The request failed with status code: {0}", response.StatusCode));<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> // Print the headers - they include the requert ID and the timestamp, which are useful for debugging the failure<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> Console.WriteLine(response.Headers.ToString());<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> string responseContent = await response.Content.ReadAsStringAsync();<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> Console.WriteLine(responseContent);<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> }<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> }<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> }<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;"> }<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: 15.75pt; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "courier new"; font-size: 10.0pt;">}<o:p></o:p></span></div>
</td> </tr>
</tbody> </table>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Let’s quickly test how it works. All we need is to enter the input data<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Test<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh56el9sR44CzHAENdduaDC2Qk3v-Qx16l-5G1c2UPUeYgXsedHjJrdWzVROLSpRtkzfj-cNoelY4E7dhNL2ElK6Flf5g9r6Ej5ku8T5tnSU3anrokLoNA0xqRLp9S43HOALTbPoL7nnZEp/s1600/image081-786682.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033943447628882" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh56el9sR44CzHAENdduaDC2Qk3v-Qx16l-5G1c2UPUeYgXsedHjJrdWzVROLSpRtkzfj-cNoelY4E7dhNL2ElK6Flf5g9r6Ej5ku8T5tnSU3anrokLoNA0xqRLp9S43HOALTbPoL7nnZEp/s320/image081-786682.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9Hlb_FkUW1I1WGyZGEiqXdUODJj41z_xqVS8CSVa328dy0AQN1xD91eMYVhI7zzb_FZRDMXY9ORFp3ZH1qcEKGmcBNhY5dk-JNUYBvGC2k1OjBI1-28LJRa3bcrQEA96vkn1bDgkerHhq/s1600/image082-789019.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033951776956434" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9Hlb_FkUW1I1WGyZGEiqXdUODJj41z_xqVS8CSVa328dy0AQN1xD91eMYVhI7zzb_FZRDMXY9ORFp3ZH1qcEKGmcBNhY5dk-JNUYBvGC2k1OjBI1-28LJRa3bcrQEA96vkn1bDgkerHhq/s320/image082-789019.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
And review the outcome<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Test results<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<b><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJBmPgiBqbeuLj1q640Dt1J9z2yCzy-mJsdOtMkqWiE_jrwKLtBqK7mB-mq8nOgAVgX4l3Byehyphenhyphen6NfJsuv81ACASmJPLsfx01W-f0qzQVv47LHPWZ2YkEi8ArLCJIBdEPAERBik1tm2eLu/s1600/image083-791450.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033961474221346" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJBmPgiBqbeuLj1q640Dt1J9z2yCzy-mJsdOtMkqWiE_jrwKLtBqK7mB-mq8nOgAVgX4l3Byehyphenhyphen6NfJsuv81ACASmJPLsfx01W-f0qzQVv47LHPWZ2YkEi8ArLCJIBdEPAERBik1tm2eLu/s320/image083-791450.jpg" /></a><o:p></o:p></b></div>
<div class="MsoNormal">
<b><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5aFBA2dJVPB-I1yv8dYA6thKBcEBYf97_a9BENas3zP4DmocvMg_MetTKwil5hAVSUAnEz8isXn7KegSIMLf_bwgMhVxtej58AGXbCeBdZPI-eks0l7J3QxuljufnSaUwnJjqX84I16lc/s1600/image084-794917.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033981063811986" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5aFBA2dJVPB-I1yv8dYA6thKBcEBYf97_a9BENas3zP4DmocvMg_MetTKwil5hAVSUAnEz8isXn7KegSIMLf_bwgMhVxtej58AGXbCeBdZPI-eks0l7J3QxuljufnSaUwnJjqX84I16lc/s320/image084-794917.jpg" /></a><o:p></o:p></b></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Test results (text)<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none;"> <tbody>
<tr> <td style="border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 467.5pt;" valign="top" width="935"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="font-family: "segoe ui" , sans-serif; font-size: 9.0pt;">'AlexIoTRegression [Predictive Exp.]' test returned ["Speaker","0","Blue","1/6/2015 12:00:00 AM","DEMOM1","2.84667311803141"]...</span><b><o:p></o:p></b></div>
</td> </tr>
<tr> <td style="border-top: none; border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 467.5pt;" valign="top" width="935"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span class="fxs-progressbox-steptitle"><span style="font-family: "segoe ui" , sans-serif; font-size: 9.0pt;">Result: {"Results":{"output1":{"type":"table","value":{"ColumnNames":["Product","Qty","Color","TransDate","Machine",<span style="background: yellow; mso-highlight: yellow;">"Scored Labels"</span>],"ColumnTypes":["String","Int32","String","DateTime","String","Double"],"Values":[["Speaker","0","Blue","1/6/2015 12:00:00 AM","DEMOM1",<span style="background: yellow; mso-highlight: yellow;">"2.84667311803141"</span>]]}}}}<o:p></o:p></span></span></div>
</td> </tr>
</tbody> </table>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Please note that Scored labels column will contain the result I’m looking for which also corresponds to the result I obtained manually earlier<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Test results</i></div>
<div class="MsoNormal">
<i> <o:p></o:p></i></div>
<div class="MsoNormal">
<b><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOC_nBH2GO5YmRi8n1ayID_oDQMVLyZJ2uIFsiybrJ4Gm30Q8uwzRgwaruQ-HE5KZGQGkOezxSayqr5qkUTBa-qsqa7D4zRiZR7aG4o5c5m6eGGDOOrE9Hjd2UIVYDPw613MkU7BmCi3ul/s1600/image085-797077.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033985993400082" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOC_nBH2GO5YmRi8n1ayID_oDQMVLyZJ2uIFsiybrJ4Gm30Q8uwzRgwaruQ-HE5KZGQGkOezxSayqr5qkUTBa-qsqa7D4zRiZR7aG4o5c5m6eGGDOOrE9Hjd2UIVYDPw613MkU7BmCi3ul/s320/image085-797077.jpg" /></a><o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Now we know how to use Microsoft Azure Machine Learning service, moreover also how to develop apps using it as a service. But we don’t need to go far to find examples in the applications you’ve already been using. One of the examples will be Demand Forecasting functionality in Microsoft Dynamics AX which essentially is an implementation of Machine Learning on practice <o:p></o:p></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
<b>Manufacturing example: </b>Demand Forecasting in Microsoft Dynamics AX<i> <o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
The general idea is that using historical data in Microsoft Dynamics AX you may predict the future customer demand, put the results of forecasting into Excel for ease of manipulation and adjustments, and then reintroduce the final result of forecasting as sales forecast back to Microsoft Dynamics AX to be further used during planning (MRP)<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
This is how Forecast algorithm default parameters look like in Microsoft Dynamics AX<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Forecast algorithm default parameters<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgB6ao_4eU9WznR4a_z7nWiNZxcPm8j-R12pD40AKfyRi-hji_uTtasJODB92XaxEufQcRXmFvAgDDChUePEZ043awe7QV78mzMWi6E8snCE9V5CTUmQvewUB5BH2noVtF2kRMkSqcQNmXD/s1600/image086-799038.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252033996079919826" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgB6ao_4eU9WznR4a_z7nWiNZxcPm8j-R12pD40AKfyRi-hji_uTtasJODB92XaxEufQcRXmFvAgDDChUePEZ043awe7QV78mzMWi6E8snCE9V5CTUmQvewUB5BH2noVtF2kRMkSqcQNmXD/s320/image086-799038.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Please note that there’re 3 auto-regression based Microsoft Time Series algorithms available {ARTXP, ARIMA, MIXED} for Demand Forecasting in Microsoft Dynamics AX<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
In essence Machine Learning algorithm schema will look like the following (right hand side)<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<i>Machine Learning algorithm schema<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuoR4Sagf3elpbw4-0j0E0Uwii5EwxP9bz2TM0QCog5YMvioa3QRivaoJKhyphenhyphen0fRMQ8Mbk7zfUKpvcq-gGtLJea6LCNQkSZugYMlJqhgQGrmHtxLwm0HrmmlBGhheJLX6ci1Qwk9ahPzbl7/s1600/image087-700921.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252034003762488626" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuoR4Sagf3elpbw4-0j0E0Uwii5EwxP9bz2TM0QCog5YMvioa3QRivaoJKhyphenhyphen0fRMQ8Mbk7zfUKpvcq-gGtLJea6LCNQkSZugYMlJqhgQGrmHtxLwm0HrmmlBGhheJLX6ci1Qwk9ahPzbl7/s320/image087-700921.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
First you train the model on the data, then you score the model to come up with predictions, and finally you can evaluate the model for accuracy against actuals (when they are available for comparison)<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
If we were to translate the canonical Machine Learning algorithm schema into Demand Forecasting terms in Microsoft Dynamics AX it would look like on the diagram above (left hand side). We train and score the model based on historical transactions during Generate statistical baseline forecast step, then Excel file with the resulting forecast is generated and can be adjusted as necessary. Then we further transact in the system and in some time we can evaluate the model for accuracy during Calculate demand forecast accuracy step <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Let’s come back from practice to theory again to better cement our knowledge of the subject<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Microsoft Time Series algorithms<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Microsoft Time Series algorithms are regression algorithms that are well optimized for the forecasting of continuous values, such as product sales, over time<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
In statistics, regression analysis is a process for estimating the relationships among variables. At this point you can reflect on my earlier explanations about usage of meaningful variables in Machine Learning experiments<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Historical vs Predicted</i></div>
<div class="MsoNormal">
<i> <o:p></o:p></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPXzyI-vuWweGqgvfV0dPS495_TWUn9HVR7T-lX6sQkMmLk_aEVS_0KioEXRsJZz9oiqXI11BGO2vyQtH-it4Hu8al2dA0HeKsSrfodP068Cy9HmSh8ixuzT6HNKe4Emp9weLcrtvOGjtG/s1600/image088-702371.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252034008287919378" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPXzyI-vuWweGqgvfV0dPS495_TWUn9HVR7T-lX6sQkMmLk_aEVS_0KioEXRsJZz9oiqXI11BGO2vyQtH-it4Hu8al2dA0HeKsSrfodP068Cy9HmSh8ixuzT6HNKe4Emp9weLcrtvOGjtG/s320/image088-702371.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
There’re certain prerequisites for Time Series algorithms to be used. Here’s what is minimally required: a single key time column (<b>DateKey</b>), a predictable column (<b>TransactionQty</b>), an optional series key column. Not surprisingly you can find all these data in Excel spreadsheet used for Demand Forecasting<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Excel<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMHGZXu9WWyPiyQXxDeZ8WyaMRFug8Cxcbo3xtWmHHgZqVoZ0532yd5aImr_dzo2VSKazRd7frS1ZjDt34_jNpInpODuPCsosmOF2pdR0beaV4TWGTtynZDplP4yALtaqb8gHcjv90VRFA/s1600/image089-703674.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252034017640894978" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMHGZXu9WWyPiyQXxDeZ8WyaMRFug8Cxcbo3xtWmHHgZqVoZ0532yd5aImr_dzo2VSKazRd7frS1ZjDt34_jNpInpODuPCsosmOF2pdR0beaV4TWGTtynZDplP4yALtaqb8gHcjv90VRFA/s320/image089-703674.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Please find more information about Microsoft Time Series algorithms here: <a href="https://msdn.microsoft.com/en-us/library/ms174923.aspx">https://msdn.microsoft.com/en-us/library/ms174923.aspx</a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
In order to see how Microsoft Time Series algorithms work I’ll provide a quick example. The idea is that using standard Demo VM for Microsoft Dynamics AX I ran 3 Demand Forecasting experiments using different algorithms {ARTXP, ARIMA, MIXED} on the same dataset (LProducts item allocation key in USMF company) and obtained a slightly different results. Below I provide analysis of the results I did in Excel <o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Excel analysis<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUyZAV3p1VRbhyphenhyphen364iX9hQ2-8o0imKq0uRLbfZ7sToVDg9Fef46o3VuoSvaYKo_JDXAJuKIfp7nArduohDibJ6LQ7yFPAtfG-Tnq6ohndOgxzv_uf54qkk9NyOyN0IUOPFtETXlI66a036/s1600/image090-705352.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252034029968585074" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUyZAV3p1VRbhyphenhyphen364iX9hQ2-8o0imKq0uRLbfZ7sToVDg9Fef46o3VuoSvaYKo_JDXAJuKIfp7nArduohDibJ6LQ7yFPAtfG-Tnq6ohndOgxzv_uf54qkk9NyOyN0IUOPFtETXlI66a036/s320/image090-705352.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Please note that practically ARTXP algorithm is more suited for short-term prediction, it is more sensitive for deviations of the demand, so on the picture above it is more reactive (Red line). ARTXP may be over-reactive though if used (or misused) for long-term prediction. ARIMA algorithm practically is more suited for long-term prediction, it is more resistant for deviations of the demand, so on the picture above it is represented with more straight line (Blue line). ARIMA may be too resistant though if used (or misused) for short-term prediction. MIXED algorithm combines the best of both worlds and typically adapts well to either short-terms prediction or long-term prediction as necessary. In my experiment MIXED is closer to ARIMA based on the results (Green line) <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
It is very important to have a reliable dataset to train the system on. On practice the dataset may not be very accurate or it may contain outliers which may skew the results of predictions. Getting back to Microsoft Dynamics AX Demand Forecasting, outliers may be caused by different kinds of artificial non-representative demand, for example, retail promotions boosting up the sales. For the best prediction results it would be ideal to be able to get rid of outliers and only keep natural representative demand in consideration for prediction. For this purpose, you may actually want to combine Regression algorithm for demand forecasting with Anomaly detection algorithm for outliers detection. This is how Machine Learning algorithms may work in concert to deliver the best results. <o:p></o:p></div>
<div class="MsoNormal">
In Microsoft Dynamics AX you may remove outliers based on predefined rules. For example, you may introduce a rule (query) to remove all high volume single transaction demand (based on quantity threshold) from consideration <o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Outlier removal<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgph3AwM8uUb67hZbvuEQnieudlwVZlvR37_rsKqDQLkELyHnm5nys13J5k-oZ2LnZ8yrSj1xlWccZ9g5jg-rDA8V63wKYdNJAFD75GcRcNF4S4MVYkCzUF-qweqTsuA_F5d-REUI8Kg_Ad/s1600/image091-708895.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252034042683570338" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgph3AwM8uUb67hZbvuEQnieudlwVZlvR37_rsKqDQLkELyHnm5nys13J5k-oZ2LnZ8yrSj1xlWccZ9g5jg-rDA8V63wKYdNJAFD75GcRcNF4S4MVYkCzUF-qweqTsuA_F5d-REUI8Kg_Ad/s320/image091-708895.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<i>Outlier removal query<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhedN31J2sW8riAUv0Tc7fUKQ6gXoKCAlUIdkW3jHCi8VchHMnbmAcrTmXkouCjj8b0uXOqiqMfwJsXNDW9n-X-BX-Hm5qsYWmFBe4IER8LyLnmR7qI9_Ja1JErFjNCpBWkxZ2Pyrz-iKBb/s1600/image092-712200.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252034059757754226" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhedN31J2sW8riAUv0Tc7fUKQ6gXoKCAlUIdkW3jHCi8VchHMnbmAcrTmXkouCjj8b0uXOqiqMfwJsXNDW9n-X-BX-Hm5qsYWmFBe4IER8LyLnmR7qI9_Ja1JErFjNCpBWkxZ2Pyrz-iKBb/s320/image092-712200.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Please note that this query is configurable, thus you may introduce ranges per product, transaction type, transaction status, quantity, etc.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Another great example would be product recommendations for cross-sell or up-sell scenarios in retail. Please note that there’re numerous Machine Learning models delivered as service in Microsoft Azure cloud from Microsoft Azure Marketplace: <a href="http://datamarket.azure.com/">http://datamarket.azure.com</a> <o:p></o:p></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
<b>Retail example</b>: Product recommendations engine in Microsoft Dynamics AX Retail MPOS<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Recommendations API is an example built with Microsoft Azure Machine Learning that helps your customer discover items in your catalog. Customer activity in your digital store is used to recommend items and to improve conversion in your digital store. The recommendation engine may be trained by uploading data about past customer activity or by collecting data directly from your digital store. When the customer returns to your store you will be able to feature recommended items from your catalog that may increase your conversion rate. Microsoft Azure Machine Learning’s Recommendations includes Item to Item recommendations: a customer who bought this also bought that and Customer to Item recommendations: a customer like you also bought that. You can find Recommendations Machine Learning model in Microsoft Azure Marketplace: <a href="http://datamarket.azure.com/dataset/amla/recommendations"> http://datamarket.azure.com/dataset/amla/recommendations</a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
In order to start using Machine Learning model from Microsoft Azure Marketplace you first need to sign up<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Sign up<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxhqaoocoZHph8UXLdbNVi-fujFDaYOWODXFtD3sp-vvI3qJCsDKzXcgzcd76jzfS2yX5rMje3GA9dRmRVCGrCz164dcbJDEIBWx3XkFMRRncvDpETs7FO1D-AI5kgIYndtPaEkGt_Ajvb/s1600/image093-715965.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252034068356430290" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxhqaoocoZHph8UXLdbNVi-fujFDaYOWODXFtD3sp-vvI3qJCsDKzXcgzcd76jzfS2yX5rMje3GA9dRmRVCGrCz164dcbJDEIBWx3XkFMRRncvDpETs7FO1D-AI5kgIYndtPaEkGt_Ajvb/s320/image093-715965.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
For the sake of this walkthrough I signed up for a free trial<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Tria</i><i>l</i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikJceyMYqTOogX4hKw7MRIefId3yp7MUhPO9hH4ZTyJoVxEDDDU-d9ldiQ135Wtx17Y34fCXxOG-OgW1l_zJ7sCQ_Gx7C12TXZWwZV1prWXM9KAxg0FiTmBFTVRZ1CHmI6WU8UdDGk92gx/s1600/image094-718173.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252034080216249202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikJceyMYqTOogX4hKw7MRIefId3yp7MUhPO9hH4ZTyJoVxEDDDU-d9ldiQ135Wtx17Y34fCXxOG-OgW1l_zJ7sCQ_Gx7C12TXZWwZV1prWXM9KAxg0FiTmBFTVRZ1CHmI6WU8UdDGk92gx/s320/image094-718173.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Once you signed up you can start using the model. The easiest way to understand what Recommendations Machine Learning model can do for you is to explore provided dataset <o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Explore this dataset<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib_dKaQe7CCVxzyoTCZ_hOXV6HlkP9AZq_VFz0p7C0tgJwBSbL0V0rdC9AKzPG9r_CbpFoBOtE5JF02XaOnjIhuAq0v5bzttM5KkYXFWid1Hiel5hfb9qY8_BjVsdLxmSpp6CfzFA1x04x/s1600/image095-721851.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252034092971486354" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib_dKaQe7CCVxzyoTCZ_hOXV6HlkP9AZq_VFz0p7C0tgJwBSbL0V0rdC9AKzPG9r_CbpFoBOtE5JF02XaOnjIhuAq0v5bzttM5KkYXFWid1Hiel5hfb9qY8_BjVsdLxmSpp6CfzFA1x04x/s320/image095-721851.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Please note that there’re numerous functions/methods available for interaction with the model. Please consider downloading a sample application for a quick start from here: <a href="http://1drv.ms/1xeO2F3">http://1drv.ms/1xeO2F3</a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
The dataset used is a catalog of books. The idea is simple: we have a list of books in the catalog, and we also have an information about what books people purchase(d), this is enough information to predict for a person purchasing a book what other books this person may also be interested in purchasing<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Catalog of books <o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixcz93wYjU3jlWsQWLjwohLgxmzTLISIn8kiayBKAs0w5sg9fLEyhIJYD3nlhx5gTzW0zxZhbG7Q5UFjOhET9zcqGgdxp3B8_7xPswGVdYzE-zWVm_siC3GQjcsSqTkmm990PtzxAZpzqC/s1600/image096-724808.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252034106308068322" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixcz93wYjU3jlWsQWLjwohLgxmzTLISIn8kiayBKAs0w5sg9fLEyhIJYD3nlhx5gTzW0zxZhbG7Q5UFjOhET9zcqGgdxp3B8_7xPswGVdYzE-zWVm_siC3GQjcsSqTkmm990PtzxAZpzqC/s320/image096-724808.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<i>Usage patterns<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_l_GbDTEEYMLTdCZrIHQgCl6Co6H3E6NqPX9cAmRPt0QVzh0yR4QBBUFBlnksLwVzCmvc223NR4X0Ooj-bpNFRUj_XF-v7hnhV8C2u3KlMqOcZXHECwU8Fuz1B6IGdR2ud5cA_AnR6ben/s1600/image097-727430.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252034121147813234" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_l_GbDTEEYMLTdCZrIHQgCl6Co6H3E6NqPX9cAmRPt0QVzh0yR4QBBUFBlnksLwVzCmvc223NR4X0Ooj-bpNFRUj_XF-v7hnhV8C2u3KlMqOcZXHECwU8Fuz1B6IGdR2ud5cA_AnR6ben/s320/image097-727430.png" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Please note that this is just a sample dataset for illustration purposes and you can use any data you would like for your particular scenarios. You can now use the sample app with your unique credentials to test Recommendations Machine Learning model<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
After downloading the sample app and substituting email and accountKey with my real values I can see the model in action<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Source code<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none;"> <tbody>
<tr> <td style="border: solid 1.0pt; padding: 0in 5.4pt 0in 5.4pt; width: 467.5pt;" valign="top" width="935"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt;">…<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt;"> public</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt;">static</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt;">void</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt;"> Main(</span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt;">string</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt;">[] args)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt;"> {<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt;"> </span><span style="background: white; color: green; font-family: "consolas"; font-size: 9.5pt;">/*<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: white; color: green; font-family: "consolas"; font-size: 9.5pt;"> if (args.Length != 2)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: white; color: green; font-family: "consolas"; font-size: 9.5pt;"> {<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: white; color: green; font-family: "consolas"; font-size: 9.5pt;"> throw new Exception(<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: white; color: green; font-family: "consolas"; font-size: 9.5pt;"> "Invalid usage: expecting 2 parameters (in this order) email and DataMarket primary account key");<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: white; color: green; font-family: "consolas"; font-size: 9.5pt;"> }<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: white; color: green; font-family: "consolas"; font-size: 9.5pt;"> */</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt;">var</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt;"> email = </span><span style="background: yellow; color: #a31515; font-family: "consolas"; font-size: 9.5pt;">"your@email.com"</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt;">;</span><span style="background: white; color: green; font-family: "consolas"; font-size: 9.5pt;">//args[0];</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt;"> </span><span style="background: white; color: blue; font-family: "consolas"; font-size: 9.5pt;">var</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt;"> accountKey = </span><span style="background: yellow; color: #a31515; font-family: "consolas"; font-size: 9.5pt;">"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt;">;</span><span style="background: white; color: green; font-family: "consolas"; font-size: 9.5pt;">//args[1];</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt;"> </span><span style="background: white; color: #2b91af; font-family: "consolas"; font-size: 9.5pt;">Console</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: "consolas"; font-size: 9.5pt;">"Invoking Azure ML Sample app for user {0}\n"</span><span style="background: white; color: black; font-family: "consolas"; font-size: 9.5pt;">, email);</span><span style="color: black; font-family: "consolas"; font-size: 9.5pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; margin-bottom: 0in;">
<span style="color: black; font-family: "consolas"; font-size: 9.5pt;">…</span><o:p></o:p></div>
</td> </tr>
</tbody> </table>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Please note that for simplicity I’m launching the app without arguments instead I provided my credentials explicitly in the code, that’s why I commented out a few lines of code<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Output <o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq6opHNeH-0qos9pHlvlLnXzuXO6_pMdCZ-vKSvzDMtKbZRaXRQBHTpCd19hMUjrMFJ8KWeT5GxNotXriz8gn_rkxlt5qQtRUVig2bee-JedOurN0gG-PeOE6X_cljQZrjG3moqnRZ1c7z/s1600/image098-730050.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252034129789391378" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq6opHNeH-0qos9pHlvlLnXzuXO6_pMdCZ-vKSvzDMtKbZRaXRQBHTpCd19hMUjrMFJ8KWeT5GxNotXriz8gn_rkxlt5qQtRUVig2bee-JedOurN0gG-PeOE6X_cljQZrjG3moqnRZ1c7z/s320/image098-730050.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Please note that the app goes through the series of steps to get to the result<o:p></o:p></div>
<div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1; text-indent: -.25in;">
< - Creating model container<o:p></o:p></div>
<div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo1; text-indent: -.25in;">
< - Importing catalog and usage data<br />
<div style="text-indent: -24px;">
<span style="text-indent: 0.25in;"> …</span></div>
</div>
<div class="MsoNormal" style="margin-left: .25in; text-indent: .25in;">
<o:p></o:p></div>
<div class="MsoListParagraph" style="mso-list: l0 level1 lfo1; text-indent: -.25in;">
< - Getting some recommendations<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Please note that when using in production your model (model container) will be already created in the cloud and pre-trained on the data, so you will get to Recommendations right away<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
As the result when purchasing one book (“Clara Callan”) I’ll be advised to look at another one (“Restraint of Beasts”) as shown above. Here’s the IDs which were used during this experiment<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Model: “96d0410a-8926-4b33-b354-fb5b8e86cd56” (“Recommendations”)<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Item: “2406e770-769c-4189-89de-1c9283f93a96” (“Clara Callan”)<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Now I can get the same result by using user interface on the web page <o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Explore this dataset (experiment)<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2mr66Xvqp4MzGbAkVqRaoPIgXqFUtkeK7d6_9SYDXwkmI7hUHvL8wnv9YVQtYdWEf-G55IVaN1V_z1xUshCKH7PF9mIrhIFym8uhNQKn8s_5r02Fm10fZqa9_AdeKO84WSQGg7gDFAt9_/s1600/image099-732275.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252034142351648466" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2mr66Xvqp4MzGbAkVqRaoPIgXqFUtkeK7d6_9SYDXwkmI7hUHvL8wnv9YVQtYdWEf-G55IVaN1V_z1xUshCKH7PF9mIrhIFym8uhNQKn8s_5r02Fm10fZqa9_AdeKO84WSQGg7gDFAt9_/s320/image099-732275.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Please note that I selected “ItemRecommend” function/method to be invoked and specified appropriate parameters for modelId and itemId(s). As expected the result will be exactly what I got from executing sample app earlier<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Result <o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEtP3j8Epz3r3zVmTem1_xGzLY0BwPJdOzxsNIWMvOKNr2LrWkWgFXNtNq6p_h6nd2zTSeYxhm1aTKtGlD5JmjrQnJ9HApDt3j9dFA831MoOlZ6ZO4a-iHDK3aVxaKu1MJq5HhOkWLa0s3/s1600/image100-734215.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252034146138398034" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEtP3j8Epz3r3zVmTem1_xGzLY0BwPJdOzxsNIWMvOKNr2LrWkWgFXNtNq6p_h6nd2zTSeYxhm1aTKtGlD5JmjrQnJ9HApDt3j9dFA831MoOlZ6ZO4a-iHDK3aVxaKu1MJq5HhOkWLa0s3/s320/image100-734215.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Machine Learning algorithm schema for Recommendations engine remains the same. First we train the model by feeding it with data (books catalog and usage), then we come up with predictions/recommendations as we score the model. Finally, you may also validate the accuracy of predictions/recommendations by comparing them to what people ultimately purchased<o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Machine Learning algorithm schema<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMwC_0BoxLZfNpc4kFvmFx9k9ERN1q36yKEedTt7qT_81rcNFfBMoIZb2PuVvTINX-QFw-1IJTKmqsRiK8kfqlLDVQG8n7cXAWQOUYs6nG5e1qyDhID1ckVEZ_oy3rqTlxuzWBPyWQ4HwI/s1600/image101-736411.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252034156310655618" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMwC_0BoxLZfNpc4kFvmFx9k9ERN1q36yKEedTt7qT_81rcNFfBMoIZb2PuVvTINX-QFw-1IJTKmqsRiK8kfqlLDVQG8n7cXAWQOUYs6nG5e1qyDhID1ckVEZ_oy3rqTlxuzWBPyWQ4HwI/s320/image101-736411.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
You can find a great practical application of Microsoft Azure Machine Learning Recommendation engine when used as a part of Microsoft Dynamics AX Retail POS <o:p></o:p></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<i>Retail MPOS (Modern POS)<o:p></o:p></i></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtRvVUq9fl0TUbvYEnIk1a8cDxufwnF3q5JJAufU5sSU6o1JEHuW4pnitUkR9KGIeyMsYSwtcRL6eoQSGv6cH27k_SpfjRDTbVdZtNrJsUJdfUqI8BJhP-yC0oFo7-3ILoafYWia5Bm5ta/s1600/image102-738346.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6252034169130179714" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtRvVUq9fl0TUbvYEnIk1a8cDxufwnF3q5JJAufU5sSU6o1JEHuW4pnitUkR9KGIeyMsYSwtcRL6eoQSGv6cH27k_SpfjRDTbVdZtNrJsUJdfUqI8BJhP-yC0oFo7-3ILoafYWia5Bm5ta/s320/image102-738346.jpg" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Please note that on the screenshot above Related products are predefined static products associated with a certain product in the setup, and Recommended products are dynamically recommended products by Microsoft Azure Machine Learning Recommendation engine based on history of customer purchases<o:p></o:p></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
<b>Summary</b>: In this article we learned about how Machine Learning algorithms apply in the context of real world business scenarios for Microsoft Dynamics, specifically, we considered Manufacturing Demand Forecasting and Retail Product Recommendations scenarios. After reading this article you should be able to implement your own scenarios using Microsoft Azure Machine Learning <o:p></o:p></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
<b>Tags</b>: Microsoft Azure, Machine Learning, Microsoft Dynamics AX, Manufacturing, Demand Forecasting, Retail, Product Recommendations, POS, Supervised Learning, Unsupervised Learning, Regression, Classification, Clustering, Anomaly detection, Web Services, Train model, Score model, Evaluate model. <o:p></o:p></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
<b>Note</b>: This document is intended for information purposes only, presented as is with no warranties from the author. This document may be updated with more content to better outline the issues and describe the solutions.<o:p></o:p></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
<b>Author</b>: <a href="https://www.linkedin.com/in/anikiev"> Alex Anikiev, PhD</a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
</div>
Alex Anikievhttp://www.blogger.com/profile/13438665643699572584noreply@blogger.com2