Submit a ticket
Välkommen
Logga in

(Developers only) Changing the implementation logic of passing the products from Dynamics to Oneflow.

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!


Hjälpte det här svaret? Ja Nej

Send feedback
Synd att vi inte kunde vara till hjälp. Hjälp oss förbättra denna artikel med din feedback.