Microsoft Dynamics CRM 2011

Microsoft Dynamics CRM 2011

Tuesday, April 16, 2019

Step by step How to Install the CRM REST Builder in your Dynamics CRM 365 in 5 minutes

In this article we describe Step by step How to Install the CRM REST Builder in your Dynamics CRM 365 in 5 minutes.
The CRM REST Builder is an open source creation by  Jason Lattimer. It will give you the chance of getting the REST OData code that you need, both using JQuery or XMLHttpRequest, automatically and avoiding to fall on errors. The Builder enables you to perform WEB API OData REST request to create One to Many , Many to One and Many to Many relationships, asynchronously:



How to Install the CRM REST Builder in your Dynamics CRM 365 in 5 minutes

1) Download the REST BUILDER:
Browse to the Jason Lattimer's Github , and download the Builder , according to your Dynamics CRM version: https://github.com/jlattimer/CRMRESTBuilder/releases



2) Import the Managed Solution to your Dynamics 365:
Open your solutions screen, and import the REST Builder solution:



3) Open the REST BUILDER:
After refreshing the Solutions form, you will see a button on the top of the form. Open it to see the Builder:





4) Create your REST request:

Create your request, and copy it to the web resource that will be called from your entity form:








That's all...
In this article we've seen Step by step How to Install the CRM REST Builder in your Dynamics CRM 365 in 5 minutes.
Enjoy Microsoft Dynamics 365 CRM!

by Carmel Schvartzman

כתב: כרמל שוורצמן










    Wednesday, April 10, 2019

    Dynamics 365 - How to Retrieve Many-To-One related Entity attributes using Web API and Javascript

    In this article we describe Step by step  How to Retrieve Many-To-One related Entity attributes using Web API and Javascript in 5 minutes. We use the JQuery included in the Dynamics form.
    This is our example :  we want to get attributes from a Contact related to a Phonecall :
    This is a MANY-TO-ONE relationship, therefore :
    Primary Entity = Contact
    Related Entity = Phonecall
    Link Entity = regardingobjectid_phonecall_contact 
     (this logical name can be inferred from the N:1 link as seen in the Customizations : see this snapshot : )





    How to Retrieve Many-To-One related Entity attributes using Web API and Javascript 



    This approach works by creating only one web resource embedded into the Form HTML page of the entity :
    1) Open the Form - Add a new Region
    2) Add a Web Resource to the Region
    3) Click on Create New Web Resource 
    4) Add the following Building Block code to the Web Resource :

    This code:
    - loads Bootstrap
    - uses JQuery form the Parent Form
    - Gets Attributes from both the current Entity (Phonecall) + the related MANY-TO-ONE Entity (Contact) :


    <html><head>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
    <script> 
       
        function fnGetContactDetails() {

          debugger;
          let gPrimaryEntityId = parent.Xrm.Page.data.entity.getId();

          if (gPrimaryEntityId) {

            gPrimaryEntityId = gPrimaryEntityId.replace("{", "").replace("}", "");

            parent.$.ajax({
              type: "GET",
              contentType: "application/json; charset=utf-8",
              datatype: "json",
              url: encodeURI(parent.Xrm.Page.context.getClientUrl() + "/api/data/v8.2/phonecalls(" + gPrimaryEntityId + ")?$select=activityid,phonenumber&$expand=regardingobjectid_contact_phonecall($select=contactid,fullname,accountrolecode,emailaddress1,telephone1,mobilephone,company)"),
              beforeSend: function (XMLHttpRequest) {
                XMLHttpRequest.setRequestHeader("OData-MaxVersion", "4.0");
                XMLHttpRequest.setRequestHeader("OData-Version", "4.0");
                XMLHttpRequest.setRequestHeader("Accept", "application/json");
                XMLHttpRequest.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");
              },
              async: true,
              success: function (data, textStatus, xhr) {
                var result = data;
                var activityid = result["activityid"];
                var phonenumber = result["phonenumber"];
                if (result.hasOwnProperty("regardingobjectid_contact_phonecall")) {
                  var contactid = result["regardingobjectid_contact_phonecall"]["contactid"];
                  var fullname = result["regardingobjectid_contact_phonecall"]["fullname"];
                  let accountrolecode = result["regardingobjectid_contact_phonecall"]["accountrolecode"];
                  let emailaddress1 = result["regardingobjectid_contact_phonecall"]["emailaddress1"];
                  let telephone1 = result["regardingobjectid_contact_phonecall"]["telephone1"];
                  let company = result["regardingobjectid_contact_phonecall"]["company"];
                  let mobilephone = result["regardingobjectid_contact_phonecall"]["mobilephone"];


                  document.getElementById("msg").innerHTML = fullname + "<br>" + // accountrolecode + "<br>" + 
                             emailaddress1 + "<br>" + telephone1 + "<br>" + company + "<br>" + mobilephone;

                document.getElementById("btnGetContact").style.display = "none";
                  // parent.Xrm.Utility.alertDialog(fullname);
                }
              },
              error: function (xhr, textStatus, errorThrown) {
                parent.Xrm.Utility.alertDialog(textStatus + " " + errorThrown);
              }
            });
          }
          else {
            parent.Xrm.Page.ui.alert("No ID for Primary Entity");
          }
        }

    </script>
    <meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta></head><body style="direction: rtl; overflow-wrap: break-word;">


    <div class="container">
      <div class="jumbotron">
        <h3>Contact Details</h3> 
        <button id="btnGetContact" class="btn btn-secondary" onclick="fnGetContactDetails()">Get Contact Details </button> 
        <b><div id="msg"></div></b> 
    </div>

    </div></body></html> 
        
    }







    That's all...
    In this article we've seen Step by step  How to Retrieve Many-To-One related Entity attributes using Web API and Javascript in 5 minutes.
    Enjoy Microsoft Dynamics 365 CRM!

    by Carmel Schvartzman

    כתב: כרמל שוורצמן