Submit a ticket
Welcome
Login

Create your own product mapping with Oneflow (Developers only)

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

  1. 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. 

  2. 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!


Did you find it helpful? Yes No

Send feedback
Sorry we couldn't be helpful. Help us improve this article with your feedback.