10 Jul’17

D365 Finance and OperationsInvoking 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

  • Reading more then 10K records in D3FOE OData API

    11 July’ 2018

    Introduction: We all know Dynamics 365 Finance and Operations has limitation of 10K records to be fetched at a time usi...

    Read more
  • Paging in D365 Customer Engagement v9.0

    10 July’ 2018

    Introduction: The Xrm.retrieveMultipleRecords method is used to retrieve a collection of records in Dynamics 365 Custom...

    Read more
  • Set up Dynamics 365 connection in Microsoft Social Engagement

    10 July’ 2018

    Introduction: This blog explains how to Set up Dynamics 365 connection in Microsoft Social Engagement. Steps to be follo...

    Read more
  • Voice of the Customer failed to install

    10 July’ 2018

    Introduction: Many people face issues in installing Voice of Customer solution on v9 environment and trying repeatedly ...

    Read more
  • Scribe Insight AX as a Web Service Find Block issue

    10 July’ 2018

    Introduction: If we need to look up for any value from AX then we do it by using a Find Block in Scribe Insight Eg: Basi...

    Read more