Skip to main content

Notifications

Announcements

No record found.

Microsoft Dynamics CRM (Archived)

Mapping parameters when opening a new form

Posted on by Microsoft Employee

Hi experts,

I have 2 case form called Apple Case and Samsung Case. 

In the account form, I have a dropdown field called new_unit with values Apple and Samsung. Based on the value chosen, the corresponding form opens from the subgrid + button. I customized the command of the button from the ribbon workbench to modify the behavior. 

Screen-Shot-2018_2D00_05_2D00_31-at-1.07.58-PM.png

Although the correct form is opening, the fields are not being mapped from account to case. I tried using the parameters["customerid"] = name; method but it doesn't work. Please find my code below and suggest what I can do to map the fields as its very important. 

function OpenCase() {

    var formId = Xrm.Page.ui.formSelector.getCurrentItem().getId();
    var unit = Xrm.Page.getAttribute("new_unit").getValue();
    var name = Xrm.Page.getAttribute("name").getValue();
  alert(name);
    if(unit == "100000000")
    {
        var parameters = {};
        parameters["customerid"] = name;
        parameters["formid"] = "4a63c8d1-6c1e-48ec-9db4-3e6c7155334c";  //replace Form C ID
        Xrm.Utility.openEntityForm("incident", null, parameters);
    }
    else
    {
        var parameters = {};
        parameters["customerid"] = name;
        parameters["formid"] = "13d6c837-5edb-4e33-9672-60650f6cf1ef"; // replace Form D ID
        Xrm.Utility.openEntityForm("incident", null, parameters);
    }
}


Thanks,

Jon

*This post is locked for comments

  • Community Member Profile Picture
    Community Member Microsoft Employee on at
    RE: Mapping parameters when opening a new form

    Hi Goutam,

    Thank you for the explanation. Now I understand it so much better.

    Best,

    Jon

  • Verified answer
    gdas Profile Picture
    gdas 50,085 on at
    RE: Mapping parameters when opening a new form

    Hi Jon,

    Exactly similar for other field only use the field name in the parameters object .

    try to pass like below -

    /*String*/
    parameters["firstname"] = "John"; // Field Name is firstname which is single line text
    


    /*Option set 1: Male, 2: female*/
     parameters["gendercode"] = "1";

    So your code should be like this -only add in next line of the lookup.

    parameters["new_symbol"] = Xrm.Page.getAttribute("tickersymbol").getValue(); 

    You will  get more details in below article  - 

    https://community.dynamics.com/crm/b/mscrmcustomization/archive/2016/10/25/xrm-utility-functions-openentityform

  • Community Member Profile Picture
    Community Member Microsoft Employee on at
    RE: Mapping parameters when opening a new form

    Hi Goutam,

    That worked!! Just one more question. How would I do the same to map simple fields such as text fields, optionset fields, etc?

    In my reply above, I used and it was working.

    var parameters = {
    new_symbol: Xrm.Page.getAttribute("tickersymbol").getValue()
    };

    But since in your code, you are declaring it as parameters["fieldname"], how would I do it?

    Thanks,

    Jon

  • Verified answer
    gdas Profile Picture
    gdas 50,085 on at
    RE: Mapping parameters when opening a new form

    Hi Jon ,

    Try with this -I have not tried , so let me know if you are getting any issue.

    function OpenCase() {
    
        var formId = Xrm.Page.ui.formSelector.getCurrentItem().getId();
        var unit = Xrm.Page.getAttribute("new_unit").getValue();
        var name = Xrm.Page.getAttribute("name").getValue();
        alert(name);
        if (unit == "100000000") {
            var parameters = {};
            //parameters["customerid"] = "Datum Child 2";
            parameters["formid"] = "4a63c8d1-6c1e-48ec-9db4-3e6c7155334c";  //replace Form C ID
    
            parameters["customerid"] = Xrm.Page.data.entity.getId().replace('{', "").replace("}", "");
            parameters["customeridname"] = Xrm.Page.getAttribute("name").getValue();
            parameters["customeridtype"] = Xrm.Page.data.entity.getEntityName();;
    
            Xrm.Utility.openEntityForm("incident", null, parameters);
        }
        else {
            var parameters = {};   
            parameters["formid"] = "13d6c837-5edb-4e33-9672-60650f6cf1ef"; // replace Form D ID
         
            parameters["customerid"] = Xrm.Page.data.entity.getId().replace('{', "").replace("}", "");
            parameters["customeridname"] = Xrm.Page.getAttribute("name").getValue();
            parameters["customeridtype"] = Xrm.Page.data.entity.getEntityName();;
    
        
            Xrm.Utility.openEntityForm("incident", null, parameters);
        }
    }
    
  • Community Member Profile Picture
    Community Member Microsoft Employee on at
    RE: Mapping parameters when opening a new form

    Hi Wei Jei,

    Thank you for your reply.

    I dont want to hardcode the values into the field. Instead I want to dynamically assign these values.

    I just tried this approach and it is working for simple fields but not lookup field (account name > customerid).

    How can I modify my code so that it works for lookup fields as well?

    function OpenCase() {
    
        var formId = Xrm.Page.ui.formSelector.getCurrentItem().getId();
        var unit = Xrm.Page.getAttribute("new_unit").getValue();
        var name = Xrm.Page.getAttribute("name").getValue();
      alert(name);
        if(unit == "100000000")
        {
            var parameters = {
    customerid: Xrm.Page.getAttribute("name").getValue(), //this line causing error
    new_symbol: Xrm.Page.getAttribute("tickersymbol").getValue()
    };
            //parameters["customerid"] = "Datum Child 2";
            parameters["formid"] = "4a63c8d1-6c1e-48ec-9db4-3e6c7155334c";  //replace Form C ID
            Xrm.Utility.openEntityForm("incident", null, parameters);
        }
        else
        {
            var parameters = {
    customerid: Xrm.Page.getAttribute("name").getValue(), //this line causing error
    new_symbol: Xrm.Page.getAttribute("tickersymbol").getValue()
    };
            //parameters["customerid"] = "Datum Child 2";
            parameters["formid"] = "13d6c837-5edb-4e33-9672-60650f6cf1ef"; // replace Form D ID
            Xrm.Utility.openEntityForm("incident", null, parameters);
        }
    }


    Thanks,

    Jon

  • Alex Fun Wei Jie Profile Picture
    Alex Fun Wei Jie 33,626 on at
    RE: Mapping parameters when opening a new form

    Hi Jon,

    refer to below link on how to set lookup field using openEntityForm.

    [View:https://msdn.microsoft.com/en-us/library/gg334375.aspx#BKMK_ExampleXrmUtilityOpentEntityForm:750:50]

    sample

    parameters["customerid"] = "2878282E-94D6-E111-9B1D-00155D9D700B";   // Guid

    parameters["customeridname"] = "Contoso";                                                   // Name

    parameters["customeridtype"] = "account";                                                         // Entity Name

  • Community Member Profile Picture
    Community Member Microsoft Employee on at
    RE: Mapping parameters when opening a new form

    Hi Shidin,

    Unfortunately, I dont understand your code.

    If you could suggest what changes I have to make to my code to map a field(lookup and a simple field), it would be very helpful.

    Thanks,

    Jon

  • Shidin Haridas Profile Picture
    Shidin Haridas 3,497 on at
    RE: Mapping parameters when opening a new form

    For lookup names, you need to pass the record id and name as well, in addition:

    Here is a helper function to set the LookUp values:

    function setLookup (fieldName, fieldType, fieldId, value) {
    try {
    var object = new Array();
    object[0] = new Object();
    object[0].id = fieldId;
    object[0].name = value;
    object[0].entityType = fieldType;
    formContext.getAttribute(fieldName).setValue(object);
    }
    catch (e) {
    alert("Error in SetLookUp:" + e.message);
    }
    },

    In your case, you need to call the function as follows:

    setLookup("customerid", "account", accountGuid, accountName)

    If this answer helps you, please mark it as verified.

    Cheers!

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

December Spotlight Star - Muhammad Affan

Congratulations to a top community star!

Top 10 leaders for November!

Congratulations to our November super stars!

Tips for Writing Effective Suggested Answers

Best practices for providing successful forum answers ✍️

Leaderboard

#1
André Arnaud de Calavon Profile Picture

André Arnaud de Cal... 291,269 Super User 2024 Season 2

#2
Martin Dráb Profile Picture

Martin Dráb 230,198 Most Valuable Professional

#3
nmaenpaa Profile Picture

nmaenpaa 101,156

Leaderboard

Featured topics

Product updates

Dynamics 365 release plans