Knowledge Base Articles

 
     

Populate the Email “FROM” field with the Email address of the user’s Queue

When you send an Email from Dynamics CRM, you can manually modify the from field of the outgoing email to a queue. Most probably you want emails sent by users from the service department to be sent from Service Queue and those emails sent from the sales department to be sent from the Sales Queue.

This simple JavaScript will update the” from” field of the email with the user’s queue.

To implement this solution either follow up these instructions or contact us and we will provide you the JavaScript as complete CRM solution (you only need to import the solution & publish).

Firstly create a web resource called EmailOnLoad.

Click Settings>Customization>Customize the System and select Web Resources from the left pane

Click>New

Enter the name and display name as in the image. Select Type as Script (Jscript) and either use the Text Editor or Upload from text file the Java Scripts in this post.


Save and close

Select the Entities node, from left pane and then expand the Email Entity and open the form “Email” from the list of 3 available forms.

Click the Form Properties on the ribbon

In the Form Libraries click Add and select the EmailOnLoad web resource

In the Event Handler section select the control as Form and the event as OnLoad.

Click the Add button and select Library as EmailOnLoad

Enter function as: emailonLoad

Click OK  to save and close all opened windows

Publish and test.

Java Script

function emailonLoad()
{
var formTypeCreate=1;
var formType = Xrm.Page.ui.getFormType();
if (formType ==formTypeCreate) 

var userid=Xrm.Page.context.getUserId();
var id=userid.replace('{',"").replace('}',"");
var trerive=retriveTeams(id);

}
}
function retriveTeams(id)
{
var reqXML="";
reqXML+="";
reqXML+="   <s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">";
reqXML+="   <s:Body>";
reqXML+="   <RetrieveMultiple xmlns=\"http://schemas.microsoft.com/xrm/2011/Contracts/Services\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">";
reqXML+="   <query i:type=\"a:QueryExpression\" xmlns:a=\"http://schemas.microsoft.com/xrm/2011/Contracts\">";
reqXML+="   <a:ColumnSet>";
reqXML+="   <a:AllColumns>true</a:AllColumns>";
reqXML+="   <a:Columns xmlns:b=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\" />";
reqXML+="   </a:ColumnSet>";
reqXML+="   <a:Criteria>";
reqXML+="   <a:Conditions />";
reqXML+="   <a:FilterOperator>And</a:FilterOperator>";
reqXML+="   <a:Filters />";
reqXML+="   </a:Criteria>";
reqXML+="   <a:Distinct>false</a:Distinct>";
reqXML+="   <a:EntityName>team</a:EntityName>";
reqXML+="   <a:LinkEntities>";
reqXML+="   <a:LinkEntity>";
reqXML+="   <a:Columns>";
reqXML+="   <a:AllColumns>false</a:AllColumns>";
reqXML+="   <a:Columns xmlns:b=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\" />";
reqXML+="   </a:Columns>";
reqXML+="   <a:EntityAlias i:nil=\"true\" />";
reqXML+="   <a:JoinOperator>Inner</a:JoinOperator>";
reqXML+="   <a:LinkCriteria>";
reqXML+="   <a:Conditions />";
reqXML+="   <a:FilterOperator>And</a:FilterOperator>";
reqXML+="   <a:Filters />";
reqXML+="   </a:LinkCriteria>";
reqXML+="   <a:LinkEntities>";
reqXML+="   <a:LinkEntity>";
reqXML+="   <a:Columns>";
reqXML+="   <a:AllColumns>false</a:AllColumns>";
reqXML+="   <a:Columns xmlns:b=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\" />";
reqXML+="   </a:Columns>";
reqXML+="   <a:EntityAlias i:nil=\"true\" />";
reqXML+="   <a:JoinOperator>Inner</a:JoinOperator>";
reqXML+="   <a:LinkCriteria>";
reqXML+="   <a:Conditions>";
reqXML+="   <a:ConditionExpression>";
reqXML+="   <a:AttributeName>systemuserid</a:AttributeName>";
reqXML+="   <a:Operator>Equal</a:Operator>";
reqXML+="   <a:Values xmlns:b=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\">";
reqXML+="   <b:anyType i:type=\"c:guid\" xmlns:c=\"http://schemas.microsoft.com/2003/10/Serialization/\">"+id+"</b:anyType>";
reqXML+="   </a:Values>";
reqXML+="   <a:EntityName i:nil=\"true\" />";
reqXML+="   </a:ConditionExpression>";
reqXML+="   </a:Conditions>";
reqXML+="   <a:FilterOperator>And</a:FilterOperator>";
reqXML+="   <a:Filters />";
reqXML+="   </a:LinkCriteria>";
reqXML+="   <a:LinkEntities />";
reqXML+="   <a:LinkFromAttributeName>systemuserid</a:LinkFromAttributeName>";
reqXML+="   <a:LinkFromEntityName>teammembership</a:LinkFromEntityName>";
reqXML+="   <a:LinkToAttributeName>systemuserid</a:LinkToAttributeName>";
reqXML+="   <a:LinkToEntityName>systemuser</a:LinkToEntityName>";
reqXML+="   </a:LinkEntity>";
reqXML+="   </a:LinkEntities>";
reqXML+="   <a:LinkFromAttributeName>teamid</a:LinkFromAttributeName>";
reqXML+="   <a:LinkFromEntityName>team</a:LinkFromEntityName>";
reqXML+="   <a:LinkToAttributeName>teamid</a:LinkToAttributeName>";
reqXML+="   <a:LinkToEntityName>teammembership</a:LinkToEntityName>";
reqXML+="   </a:LinkEntity>";
reqXML+="   </a:LinkEntities>";
reqXML+="   <a:Orders />";
reqXML+="   <a:PageInfo>";
reqXML+="   <a:Count>0</a:Count>";
reqXML+="   <a:PageNumber>0</a:PageNumber>";
reqXML+="   <a:PagingCookie i:nil=\"true\" />";
reqXML+="   <a:ReturnTotalRecordCount>false</a:ReturnTotalRecordCount>";
reqXML+="   </a:PageInfo>";
reqXML+="   <a:NoLock>false</a:NoLock>";
reqXML+="   </query>";
reqXML+="   </RetrieveMultiple>";
reqXML+="   </s:Body>";
reqXML+="   </s:Envelope>";
var req = new XMLHttpRequest();
req.open("POST", getClientURL() + "/XRMServices/2011/Organization.svc/web", false);
req.setRequestHeader("Accept", "application/xml, text/xml, */*");
req.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
req.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/RetrieveMultiple");
req.onreadystatechange = function () 
{
 if (req.readyState == 4 /* complete */)
{
req.onreadystatechange = null; //Addresses potential memory leak issue with IE
if (req.status == 200) 
{
var guidId;
var email = req.responseXML;
if (email != null) 
{
var emailAttributes = null;
if (window.navigator.appName == "Microsoft Internet Explorer" || window.navigator.appName == "Netscape") 
{
if (navigator.appVersion.indexOf("Chrome") == -1)
emailAttributes=email.getElementsByTagName("a:Entities");
else
emailAttributes = email.getElementsByTagName("Entities");
}
else if (navigator.appVersion.indexOf("Chrome") != -1)
{
emailAttributes=email.getElementsByTagName("a:Entities")
}
for (i = 0; i < emailAttributes.length; i++) 
{
var entity=null;
if (navigator.appVersion.indexOf("Chrome") == -1)
entity=emailAttributes[i].getElementsByTagName("a:Entity")
else
entity=emailAttributes[i].getElementsByTagName("Entity")
for(j=0;j<entity.length;j++)
{
var attr=null;
if (navigator.appVersion.indexOf("Chrome") == -1)
attr=entity[j].getElementsByTagName("a:Attributes")
else
attr=entity[j].getElementsByTagName("Attributes")
for(k=0;k<attr.length;k++) 
{
try
{
var val= attr[k].childNodes[0].childNodes[0].nodeTypedValue;
var val1=attr[k].childNodes[0].childNodes[0].textContent;
if(val=="queueid")
{
if(attr.length!=0 && attr[k]!=null &&  attr[k].childNodes[0].childNodes[0].nodeTypedValue=="queueid")
{
var guidId=attr[k].childNodes[0].childNodes[1].childNodes[0].nodeTypedValue;
var name=attr[k].childNodes[0].childNodes[1].lastChild.text;
var qName=name.replace('<',"").replace('>',"");
lookupSetting(guidId,qName);
break;
}
}
else
{
if(attr.length!=0 && attr[k]!=null &&  attr[k].childNodes[0].childNodes[0].textContent=="queueid")
{
var guidId=attr[k].childNodes[0].childNodes[1].childNodes[0].textContent;
var name=attr[k].childNodes[0].childNodes[1].lastChild.textContent;
var qName=name.replace('<',"").replace('>',"");
lookupSetting(guidId,qName);
break;
}
}
}
catch(ex){}
}
}  
}
}
}
}
};
req.send(reqXML);
}
function getClientURL()
{
var url=Xrm.Page.context.getClientUrl();
return url;
}
function lookupSetting(guidId,qName)
{
   var lookup = new Array();
lookup[0] = new Object();
lookup[0].id =guidId;
lookup[0].name =qName;
lookup[0].entityType = "queue";
Xrm.Page.getAttribute("from").setValue(lookup);
    }







Select from Category List