Using functions in Zoho CRM Circuits, howto and solution

Using functions in Zoho CRM Circuits, howto and solution

So, I don't know if anyone has tried this yet but Circuits can be a pretty powerful solution to process data and get the job done in a more structured way. However Circuits are not that easy as it looks. One of the problems that we had to overcome was how to use the returned result of a function in a Circuit.

Even though the Log viewer showed exactly the right results, stuff like applying conditions in a Branche state did not work. Searching the documentation (for hours) and testing all kinds of settings did not provide a solution and after a session with support of 2 hours the final solution came to light.

There are requirements to the json output of a function before you can use it in a circuit. So in order to make it easy for the rest I created a wrapper function that will output the right format.

  1. String circuitWrapper(String payload)
  2. /*

    The output format that is needed for use of functions in circuits is below. This wrapper creates this format
    This only applies to functions of which results are used in follow up states

    {
        "crmAPIResponse": {
            "body": {
                "code": "success",
                "details": {
                    "output": {
                        "acb": "1234"
                    }
                }
            }
        }
    }
    */
    returnMap = Map();
    customAPIResponse = Map();
    outputMap = Map();
    body = Map();
    outputMap.put("output",payload.toMap());
    body.put("code","success");
    body.put("details",outputMap);
    customAPIResponse.put("body",body);
    returnMap.put("crmAPIResponse",customAPIResponse);
    return returnMap;
So in order to adapt a function to be used in a Circuit, just create this function and output the result in your fuction by

return standalone.circuitWrapper(payload);

One final tip: if you want to learn more about Circuits, check out the Catalyst documentation on the topic. It is more extensive than the one for CRM.