You can replace the implementation of how we take products and discounts from Dynamics and pass them to Oneflow.
Note:
This article is an advanced tutorial for experienced Dynamics CRM Developers.
Register plugin
- So, for us to replace the implementation, we’ll need to register a plugin step for an of_GetProductsPayload message:
Note:
It should be synchronous and should execute on PostOperation.
- When the Executemethod of your plugin is called, you’ll get the following input and output parameters:
Param name | Direction | Data type | Description |
---|---|---|---|
requestData | Input | string | JSON string contains the agreementId in Oneflow and opportunityId of the opportunity in Dynamics to take the products from. |
isError | Output | bool | Indicates whether an error occurred during the out-of-the-box operation |
errorMessage | Output | string | Error details if an exception occurred. |
result | Output | string | Resulting JSON string of products to add to the Oneflow contract. |
Examples
RequestData format
{ requestData: "{"opportunityId":"E01D4725-8E1D-EA11-A811-000D3AB409EA","contractId":1107536}" }
Result format
[ { "products": [ { "description": "description of the greatest product", "name": "Greatest Product ever", "price_1": { "base_amount": "15,00" }, "quantity": { "amount": 2, "type": "multiple" } }, { "description": "Discount for Greatest Product ever", "name": "Discount", "price_1": { "base_amount": "0.00", "discount_amount": "5,00" }, "quantity": { "amount": 1, "type": "multiple" } }, { "description": "Glasses", "name": "Glasses", "price_1": { "base_amount": "15,00" }, "quantity": { "amount": 1, "type": "multiple" } }, { "description": "", "name": "Tax", "price_1": { "base_amount": "10,00" }, "quantity": { "amount": 1, "type": "multiple" } }, { "description": "", "name": "Discount for the whole order", "price_1": { "base_amount": "0.00", "discount_amount": "3,95" }, "quantity": { "amount": 1, "type": "multiple" } } ] } ]
The payload field contains a JSON that’s passed to Oneflow API directly.
You can read more about the object structure in Oneflow API docs at https://developer.oneflow.com/docs/product-group.
Replace JSON result
Now, if you want to have your implementation of products, you’ll need to replace the original result JSON with your own as follows:
stringrequestData=(string)context.ExecutionContext.InputParameters[ "requestData" ];stringresult=(string)context.ExecutionContext.OutputParameters[ "result" ];boolisError=(bool)context.ExecutionContext.OutputParameters[ "isError" ];stringerrorMessage=(string)context.ExecutionContext.OutputParameters[ "errorMessage" ];objectoldResultParsed=JSON.Deserialize(result);//parseoldresultandprocessifneeded//...//...//...//createyourownjsonobjectmyResult=.....;stringmyResultJson=JSON.Serialize(myResult);context.ExecutionContext.OutputParameters[ "result" ]=myResultJson;
That’s it!