Follow the step-by-step process to Get the value from the email activity From field and set the value in the customer type lookup field.
In my scenario, I want to Get the value from the email activity From partylist field and Set the value in the custom field which is of Customer Type. (i.e. From & Customer)
Step by step follow below custom activity code:
// Declare InArgument & OutArgument
//Pass email input argument to
workflow
[RequiredArgument]
[Input("Email")]
[ReferenceTarget("Email")]
public InArgument<EntityReference> Email { get; set; }
//Return output parameter which is
of contact type in my case
[ReferenceTarget("contact")]
[Output("customer")]
public OutArgument<EntityReference> customer { get; set; }
Write below code inside execute method:
var email = Email.Get(context);
var
emailDetails = service.Retrieve(email.LogicalName, email.Id, new ColumnSet("from"));
if (emailDetails.Contains("from") && emailDetails["from"] != null)
{
EntityCollection
FromCollection = emailDetails.GetAttributeValue<EntityCollection>("from");
//To get the from reference and set
on the Email customer lookup
customer.Set(context, fromContact);
}
//Method to get the value from From field and Set it to Customer Lookup
public
EntityReference GetFromContact(EntityCollection fromCollection)
{
EntityReference contact = null;
try
{
if (fromCollection != null && fromCollection.Entities.Count > 0)
{
var from =
fromCollection.Entities.First();
//To get the entity type
var partyId =
from.GetAttributeValue<EntityReference>("partyid");
tracingService.Trace("PartyId: " + partyId.Id +
" PartyId LogicalName: " + partyId.LogicalName);
if (partyId.LogicalName == "contact")
{
//To set the customer lookup
contact = new
EntityReference(partyId.LogicalName, partyId.Id);
}
}
}
catch (Exception ex)
{
}
return contact;
}
Build, Sign and register the workflow activity code using the Plugin registration tool
Thank you..
Keep Learning..!!