In my previous posts, I have talked about Action :
All about Custom Action
Then I also have many example to utilize Action to cater my idea extending xRM Platform.
Now, I am explaining Custom Action as Custom Message that enable for developer to Register as a Step in Plugin Registration Tool!
This is very useful when you want to do integration or calling a server side complex business logic, for example Calculation and Validation.
But, there is a doubt that in Steps, you can only do simple thing, nothing to do? Then, how?
These standard steps of CRM 2013 Action are very limited and nothing much different with other Workflow.
If you think that Available Steps in Action is not be able to accommodate what you want, then? Then, Customize it, do advance customization on it.
Now, first let me guide you. I give you example how to extend Custom Action as Custom Message, I don’t want to give a complex sample now, just give you a concept to understand.
I give you sample how to do calculation with Formula : Money1 + Money2 = MoneySum.
Two input arguments : Money 1 and Money 2
One outpur argument : Money Sum
1. Create an Action (You can refer to my above links, and also from that link you can see any links to talk about Action in CRM 2013)
Create your own Message : SimpleCalculation, for example (and give some prefix to indicate it)
(Remember, this is will be your custom message, a verb, a message, that you will use as your universal code contract to be registered to be used by any custom code, just make sure you give them a proper name).
Define your argument as well
2. Why no steps?
I want to let you know that you also can create your logic instead using those standard steps.
3. Activate it.
4. Generate an Early Bound Class to get your action in your class library
Please refer to this article :
Generate Custom Action as Early Bound
You also can use Early Bound and Late Bound, but for easier way, I use Early Bound as a sample.
5. Create a Plugin Class and put this code :
public class Action_SimpleCalculation : IPlugin { public void Execute(IServiceProvider serviceProvider) { #region must to have IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); // Create service with context of current user IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); //create linq context KonicaBaseContext baseContext = new KonicaBaseContext(service); //create tracing service ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService)); #endregion //To get access to the image of the Quote record EntityReference entityRef = context.InputParameters["Target"] as EntityReference; //To read the input parameter Money money1 = context.InputParameters["Money1"] as Money; Money money2 = context.InputParameters["Money2"] as Money; Money sum = new Money(money1.Value + money2.Value); //using this as a response output context.OutputParameters["MoneySum"] = sum; } }
6. Register Your Class as Plugin using Plugin Registration Tool
(You might have to refresh your Plugin Registration Tool until you can see your Action as Message)
Register your step :
7. Call your Action from your Code
8. Pass to your Execution Code your own parameter
For example : 2000 and 5000, and pass your Quote Id as Target Entity (if you have this specific entity when you create your Action)
Then, your Total Amount will be : 7000 from 2000 + 5000
Throw an error message for capturing your Total Amount.
Let’s test it, run your code!
9. Test your code by triggering your custom code (In this case I call my Action after my Quote updated)
Here is the result :
Here, I don’t put any logic in my Plugin, I just using one single point, that is Custom Action.
Next time, my logic has been changed, I don’t need to change my plugin logic or any custom code about my calculation, because I only implement my code in this Action.
Hope it is informative for you!
HI
ReplyDeleteAre custom action messages available online ? When I try to register my plugin against the custom activated action it is not displayed in the message list. I have tried refreshing the organisation and logging in and out with the plugin registration tool with no joy
Thanks
Shane
this worked with the latest Plugin Registration Tool
ReplyDeleteThank you Shane
DeleteI have follow your blog that's nice please follow us:-The sales lead follow up are all effective and tough making sure that your business gets the necessary demand all fulfilled thereby taking into count all features necessary for your management. The website is professionally designed making sure business owners can get the basic task completed within simple and effective ways. The auto dealer crm is worth enough for use and can be bought by any business from genuine service providers.
ReplyDeleteThank you ever so for you article. Really Cool.
ReplyDeletebest salesforce online training
salesforce online training from india