Posted by: Nishant Rana | July 11, 2008

PreEntity and PostEntity Images in CRM 4.0

Hi ,

When writing callouts for CRM 3.0, we were provided with PreEntityImageXml and PostEntityImageXml as a parameter to methds being overrided by us.

We could specify the fields for the same in the callout.config as prevalue and postvalue tag.

But the things have changed a bit in CRM 4.0.

Here we have to implement the Execute method found in the interface IPlugin.

public void Execute(IPluginExecutionContext context)

Here first we will register our assembly using Plugin Registration Tool

Than we will register a new step and specify the message against which we want to run our plugin.

After this comes the step where we will RegisterĀ  new image.

In Register New Image dialog box

We can specify Pre Image and Post Image depending upon pre or post event. (Only for post event we can have both pre and post image)

Parameters -Here we can either specify certain fields or can select all attributes.

Entity Alias - Give a name to our image which we will refer in our code. (eg. say we gave LeadImage)

Now to access these values within our plugin we needĀ  to do the following:-

Cast it into a DynamicEntity
DynamicEntity preLead = (DynamicEntity)context.PreEntityImages["LeadImage"];
DynamicEntity postLead = (DynamicEntity)context.PostEntityImages["LeadImage"];

For getting the id of the entity ( unlike crm 3.0 we don;t have entity context over here )

Key keyLeadId = (Key)postLead.Properties["leadid"];
string leadId = keyLeadId.Value.ToString();

For lookup field use this line of code

Lookup lkpLobPre = (Lookup)preLead.Properties["new_linesofbusinessid"];
strPreLobGuid = lkpLobPre.Value.ToString();
Lookup lkpLobPost = (Lookup)postLead.Properties["new_linesofbusinessid"];
strPostLobGuid = lkpLobPost .Value.ToString();

For owner field

Owner ownerLead = (Owner)postLead.Properties["ownerid"];
strPostOwnerGuid = ownerLead.Value.ToString();

For money field

CrmMoney estimatedvalue = (CrmMoney)postLead["new_expectedrevenue"];
strExpectedRevenue = estimatedvalue.Value.ToString();

For string field

String geoName = (String)postLead["new_geographyidname"];

For picklist field

Picklist leadqualitycode = (Picklist)postLead["leadqualitycode"];
strRating = leadqualitycode.name;

Bye


Responses

  1. Thanks for sharing :)

  2. Greate, Thanks for the post.


Leave a response

Your response:

Categories