10 Jul’17

Dynamics 365, EnterpriseInvoking Web Service/Rest API from D365 FOE

In this blog article, we will see how we can invoke web service call for a third-party application in Dynamics 365 for Finance and Operations, Enterprise Edition using X++.

In this blog we will Consider Service Order Entity as source passing Service Order values to a third party application on Service Order creation using web service endpoint url.

  • Create a SMAServiceOrderTable Table post Insert event.
    /// <summary>
    /// Post insert passing Service Order values and URL to invoke Web service
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    [DataEventHandler(tableStr(SMAServiceOrderTable), DataEventType::Inserted)]
    public static void SMAServiceOrderTable_onInserted(Common sender, DataEventArgs e)
            SMAServiceOrderTable serviceOrderTable;
            serviceOrdertable = sender as SMAServiceOrderTable;
            String15 SOstatus = enum2Str(serviceOrderTable.Progress);        
            //parmvalue stores Service Order values in container
            container parmvalue = ["'CustAccount':'"+serviceOrderTable.CustAccount+"'","'ServiceOrderId':'"+serviceOrderTable.ServiceOrderId+"'","'CurrencyCode':'US Dollar'","'SOStatus':'"+SOstatus+"'","'ProjId':'"+serviceOrderTable.ProjId+"'","'CFSCRMWorkOrderNo':'"+serviceOrderTable.CFSCRMWorkOrderNo+"'"];
            new WebService().sendrecord("<<webservice url>>",parmvalue);
  • Create a class which calls the web service.
    Class WebService
    public void sendrecord(String255 endpointurl,container arryI)
            str                             url;
            str                             postData;
            str                             returnValue;
            System.Net.HttpWebRequest       request;
            System.Net.HttpWebResponse      response;
            System.Byte[]                   byteArray;
            System.IO.Stream                dataStream;
            System.IO.StreamReader          streamReader;
            System.Net.ServicePoint         servicePoint;
            System.Net.ServicePointManager  servicePointManager;
            CLRObject                       clrObj;
            System.Text.Encoding            utf8;
            Counter  countCounter;
            //generate postdata in json format
            postData = "{";
            for(countCounter= 1;countCounter<= conlen(arryI);countCounter++)
                postData = postData+conpeek(arryI,countCounter)+",";       
            postData = postData+"}";       
            new InteropPermission(InteropKind::ClrInterop).assert();
            url = endpointurl;
            clrObj = System.Net.WebRequest::Create(url);                     
            request = clrObj;
            utf8 = System.Text.Encoding::get_UTF8();
            byteArray = utf8.GetBytes(postData);
            dataStream = request.GetRequestStream();
            dataStream.Write(byteArray, 0, byteArray.get_Length());

Let me know your reviews. I will soon come up with more articles, as I further explore D365 Operations.

Written by

Sohagani Shah

ERP Developer

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload the CAPTCHA.

Want to streamline your business processes?

  • This field is for validation purposes and should be left unchanged.

Recent Articles

  • Dynamics 365 Client Diagnostics

    15 March’ 2018

    Main cause of Performance Issues: Bandwidth and latency are the primary characteristics which affects the performance o...

    Read more
  • Closing Blind Shift in MPOS and CPOS in Dynamics 365 for Retail

    15 March’ 2018

    Manual For closing Blind shift in POS: Blind shifts terminate the currently ongoing shift and when logged in a new shif...

    Read more
  • Persistent Filters in the Power BI Service

    13 March’ 2018

    Introduction: The feature is finally release, and it is power BI has announced general availability of persistent filt...

    Read more
  • Cause and Solution for Scribe MSMQ not receiving Message from AX

    10 March’ 2018

    Issue: Microsoft Message Queuing (MSMQ) service running on Server might be unable to receive messages. Therefore, messa...

    Read more
  • User Privileges on SharePoint – D365 Document Integration

    10 March’ 2018

    Overview: Often, we wonder what could be wrong where we see a generic error on Documents in Dynamics 365. Something lik...

    Read more