Hello Everyone,
A Custom Function is a user-written set of code to achieve a specific requirement. Set the required conditions needed as to when to trigger using the Workflow rules (be it Tasks / Project) and associate the custom function to it.
Requirement:-
One of our customers had Zoho Projects and Zoho Desk integrated. When a customer raises a ticket, they will create a task in Zoho Projects and the ticket will be closed in Desk.
Upon Task completion, the Task owner will manually check the associated ticket and update the status to Re-open, enabling the ticket owner to notify the customer.
They wanted a way to automate the Re-opening of Desk ticket once the Task is Closed in Zoho Projects. This automation was implemented using Custom Functions in Zoho Projects along with Task Workflow Rules.
Custom function code:-
updateTaskParameter = Map();
deskOrgId = "XXXXXXXX";
deskURL = "https://desk.zoho.com";
status = "reopened";
task = invokeurl
[
url :"https://projectsapi.zoho.com/restapi/portal/" + portalId + "/projects/" + projectId + "/tasks/" + taskId + "/"
type :GET
connection:"YYYYYYYY"
];
ticketId = task.get("tasks").get(0).get("desk").get("ticket").get("id");
ticketTaskId = task.get("tasks").get(0).get("desk").get("task").get("id");
if(ticketId != null || ticketId != "")
{
paramMap = Map();
paramMap.put("status",status);
//Update ticket status
updateTicket = invokeurl
[
url :deskURL + "/api/v1/tickets/" + ticketId
type :PATCH
parameters:paramMap.toString()
connection:"YYYYYYYY"
];
}
return "success";
Make sure to replace XXXXXXX with Zoho Desk organization id and replace YYYYYYYY with the Zoho Oauth connection link name which has the scopes: Desk.tickets.ALL, zohoprojects.tasks.READ. Check this link to learn how to create the connection.
Please find the screenshots of the parameters to be mapped and sample workflow rule for reference.
Our customer was able to leverage custom functions in Zoho Projects, which allowed them to streamline automatic status updates to Zoho Desk, reducing manual update and in turn increasing their business productivity.
We hope you found this post useful. If you have any questions, feel free to share them in the comments below.