FOUR steps in order to Dynamically SET the Account field after fetching the Contact's parent field:
Copy Paste the four functions
Rename few text to fit into your CRM fields
Save and publish
Add your Javascript OnChange of the Contact field
1. Copy paste the following four functions:
function getAccountRelatedToContact(fieldName)
{
var contact = Xrm.Page.getAttribute(fieldName);
if (contact === null || contact.getValue() === null)
{ return; }
var contactValue = contact.getValue();
var contactId = contactValue[0].id;
Xrm.WebApi.retrieveRecord("contact", contactId, "? $select=fullname&$expand=parentcustomerid_account($select=name, accountid)").then(
function success(result)
{
//No parent Account for the contact: clear the form's account field
if(result.parentcustomerid_account == null)
{
Xrm.Page.getAttribute("new_accountid").setValue(null);
}
var recordId = result.parentcustomerid_account.accountid;
var recordName = result.parentcustomerid_account.name;
// Get the result
GetResult(result);
},
function (error) { console.log(error.message);
});
}
function GetResult(account)
{
var recordId = account.parentcustomerid_account.accountid;
var recordName = account.parentcustomerid_account.name;
setLookupValue("new_accountid", "account", recordId, recordName);
}
function setLookupValue(lookupSchemaName, entitySchemaName, recordId, recordName)
{
Xrm.Page.getAttribute(lookupSchemaName).setValue(
[ { entityType: entitySchemaName, id: recordId, name: recordName}]);
}
2. Find and Replace the following text to fit in your CRM context
Replace "new_accountid" by "your CRM field name between quotation mark"
Replace parentcustomerid_account by AccountFieldNamePresentOnContact'sForm
3. Save your Javascript and publish
After having renamed the corresponding sections of the code, Save and Publish your Javascript.

4. Add your Javascript OnChange of the Contact field
a/ Go to the Custom Entity form that your code will trigger at and Click on Form Properties.
b/ On the Events Tab, pick up your Javascript and call the function:
and pass to it the parameter: "new_contactid"
NB: "new_contactid" stands for the name of the contact field present on the custom entity's form

