Print

Zoho CRM REST API: Stop Workflow from Triggering

What?
This is an article to show you how to use triggers but also how to stop them. We only found this an issue when using REST API v2.1 but also to show you how to configure triggers when using createRecord or updateRecord.

Why?
We had a Creator app updating a CRM record which in turn had a workflow to update the Stage in Creator (so a user can change the stage in CRM and it would reflect this in the equivalent Creator record). There was also a workflow that ran when the Creator record was updated to update its changes to CRM. It was actually causing a loop which used up all the API calls.

How?
You might already be familiar with some of the trigger options below but one that worked was initially guessed as "none" but then later found in the documentation could also be an empty list [].

So there are a few trigger options but I'm listing the one(s) to stop workflows below to see if this helps anyone:

Stop Workflows from executing:
copyraw
l_Quotes = List();
l_Quotes.add(m_CreateCrmQuote);
m_Data = Map();
m_Data.put("data",l_Quotes);
l_Triggers = List();
l_Triggers.add("none");
m_Data.put("trigger",l_Triggers);
v_Url = "https://www.zohoapis.eu/crm/v2.1/Quotes/" + input.CRM_Quote_ID;
r_CreateCrmQuote = invokeurl
[
    url :v_Url
    type :PUT
    parameters:m_Data.toString()
    connection:"ascentbusiness"
];
  1.  l_Quotes = List()
  2.  l_Quotes.add(m_CreateCrmQuote)
  3.  m_Data = Map()
  4.  m_Data.put("data",l_Quotes)
  5.  l_Triggers = List()
  6.  l_Triggers.add("none")
  7.  m_Data.put("trigger",l_Triggers)
  8.  v_Url = "https://www.zohoapis.eu/crm/v2.1/Quotes/" + input.CRM_Quote_ID; 
  9.  r_CreateCrmQuote = invokeUrl 
  10.  [ 
  11.      url :v_Url 
  12.      type :PUT 
  13.      parameters:m_Data.toString() 
  14.      connection:"ascentbusiness" 
  15.  ]

or

copyraw
l_Quotes = List();
l_Quotes.add(m_CreateCrmQuote);
m_Data = Map();
m_Data.put("data",l_Quotes);
m_Data.put("trigger",[]);
v_Url = "https://www.zohoapis.eu/crm/v2.1/Quotes/" + input.CRM_Quote_ID;
r_CreateCrmQuote = invokeurl
[
    url :v_Url
    type :PUT
    parameters:m_Data.toString()
    connection:"ascentbusiness"
];
  1.  l_Quotes = List()
  2.  l_Quotes.add(m_CreateCrmQuote)
  3.  m_Data = Map()
  4.  m_Data.put("data",l_Quotes)
  5.  m_Data.put("trigger",[])
  6.  v_Url = "https://www.zohoapis.eu/crm/v2.1/Quotes/" + input.CRM_Quote_ID; 
  7.  r_CreateCrmQuote = invokeUrl 
  8.  [ 
  9.      url :v_Url 
  10.      type :PUT 
  11.      parameters:m_Data.toString() 
  12.      connection:"ascentbusiness" 
  13.  ]

or (untested)

copyraw
m_Trigger = Map();
m_Trigger.put("trigger",[]);
r_Update = zoho.crm.updateRecord("Module",p_RecordID,m_UpdateRecord,m_Trigger);
  1.  m_Trigger = Map()
  2.  m_Trigger.put("trigger",[])
  3.  r_Update = zoho.crm.updateRecord("Module",p_RecordID,m_UpdateRecord,m_Trigger)

From the documentation:
The trigger input can be workflow, approval, or blueprint. If trigger is not mentioned, the workflows, approvals, and blueprints related to the API will get executed. Enter the trigger value as [] to not execute the workflows.


Source(s):
Category: Zoho :: Article: 746