Hello Everyone!
We’re excited to bring you another custom function this week. In this edition, we’ll show you how to automatically close tickets when all associated tasks are marked as completed.
Let’s see how ZylkaPure, a leading water filter company, benefits from this functionality. ZylkaPure specializes in installing and servicing water filters for homes and offices. When a customer books a service, a ticket is created, and the specific tasks required for the service are added to it. As service engineers carry out the necessary work, they update the status of each task. Once all tasks are marked as completed, the system automatically closes the ticket, ensuring a streamlined process and reducing manual follow-ups.
Implementing this custom function in your portal can automate ticket closure and simplify your workflow. Follow these steps to set up the automation in your system.
Prerequisites
1. Create a connection
1.1 Go to Setup and choose Connections under Developer Space.
1.2 Click Create Connection.
1.3 Select Zoho Desk under Default Services.
1.4 Give the connection name as closeticketbytask.
1.5 Under Scope, choose the below scope values:
Desk.activities.READ
Desk.activities.tasks.READ
Desk.tickets.UPDATE
1.6 Click Create and Connect.
1.7 Click Connect and click Accept.
Connection is created successfully.
Create a Workflow Rule
1. Go to Setup, choose Workflows under Automation.
2. Under Workflows, click Rules >> Create Rule.
In the Basic Information section,
3. Select Tasks from the drop-down menu under Module.
4. Enter a Rule Name and Description for the rule.
5. If you want to activate the rule right away, select the Active checkbox. Else, create the rule and activate it later.
6. Click Next.
In the Execute on section, follow these steps:
7. Select Field Update and select the field Status to execute this rule every time the task status is updated.
8. Click Next.
In the Criteria section
9. Specify the criteria as Status is Completed, AND Completed Time is not empty.
10. In the Actions section, click the + icon and select New next to Custom Functions.
11. Enter a Name and Description for the custom function.
12. Under Argument Mapping, give a desired Method Name. Map the arguments as below:
12.1 In the Argument Name field, type taskId and from the Value drop-down list, select Task Id under Task Section.
12.2 In the Argument Name field, type associatedTicketId, and from the Value drop-down list, select Ticket Id under Tasks Section.
13. In the script window, insert the Custom Function given below:
- // ----<<<< User Inputs >>>>----
- // --- Replace ".com" with appropriate domain based on your DC
- deskURL = "https://desk.zoho.in";
- // --- Enter a status name to indicate the 'completed' status of a task ---
- taskCompletedStatusName = "Completed";
- taskCanceledStatusName = "Canceled";
- // --- Enter the name of the custom status to be updated in the Ticket after the completion of all the associated Tasks ---
- statusNameToUpdateInTicket = "Closed";
- // ----<<<< Initial Configs >>>>----
- logs = Map();
- logs.insert("taskId":taskId,"associatedTicketId":associatedTicketId);
- tasksListToProcess = List();
- shallUpdateTicketStatus = false;
- //---------------------------
- try
- {
- // ---- Check to find the Task and Ticket association ----
- isTicketAssociatedWithThisTask = !isNull(associatedTicketId) && !isEmpty(associatedTicketId);
- if(isTicketAssociatedWithThisTask)
- {
- // --- Get the list of all tasks associated with this ticket ---
- getTasksListApiParam = Map();
- getTasksListApiParam.insert("from":0,"limit":100,"isSpam":false,"sortBy":"createdTime");
- logs.insert("getTasksListApiParam":getTasksListApiParam);
- getTasksListApiResponse = invokeurl
- [
- url :deskURL + "/api/v1/tickets/" + associatedTicketId + "/tasks"
- type :GET
- parameters:getTasksListApiParam
- headers:{"Content-Type":"application/json"}
- connection:"closeticketbytask"
- ];
- logs.insert("getTasksListApiResponse":getTasksListApiResponse);
- isValidToProcess_getTasksListApiResponse = !isNull(getTasksListApiResponse) && !isEmpty(getTasksListApiResponse) && getTasksListApiResponse.size() > 0 && getTasksListApiResponse.containsKey("data");
- logs.insert("isValidToProcess_getTasksListApiResponse":isValidToProcess_getTasksListApiResponse);
- if(isValidToProcess_getTasksListApiResponse)
- {
- tasksListToProcess = getTasksListApiResponse.get("data");
- }
- }
- logs.insert("isTicketAssociatedWithThisTask":isTicketAssociatedWithThisTask,"tasksListToProcess_size":tasksListToProcess.size());
- if(tasksListToProcess.size() > 0)
- {
- // --- Check to ensure that all tasks are completed or not ---
- for each currentTaskDetail in tasksListToProcess
- {
- currentTaskStatusName = currentTaskDetail.get("status");
- currentTaskCompletedTime = currentTaskDetail.get("completedTime");
- if((currentTaskStatusName == taskCompletedStatusName || currentTaskStatusName == taskCanceledStatusName) && !isNull(currentTaskCompletedTime))
- {
- shallUpdateTicketStatus = true;
- }
- else
- {
- logs.insert("notCompletedTaskId":currentTaskDetail.get("id"));
- shallUpdateTicketStatus = false;
- break;
- }
- }
- }
- logs.insert("shallUpdateTicketStatus":shallUpdateTicketStatus);
- if(shallUpdateTicketStatus)
- {
- // --- Update status field to the associated ticket ---
- ticketUpdateApiParam = Map();
- ticketUpdateApiParam.insert("status":statusNameToUpdateInTicket);
- logs.insert("ticketUpdateApiParam":ticketUpdateApiParam);
- ticketUpdateApiResponse = invokeurl
- [
- url :deskURL + "/api/v1/tickets/" + associatedTicketId
- type :PATCH
- parameters:ticketUpdateApiParam.toString()
- headers:{"Content-Type":"application/json"}
- connection:"closeticketbytask"
- ];
- logs.insert("ticketUpdateApiResponse":ticketUpdateApiResponse);
- }
- }
- catch (errorInfo)
- {
- logs.insert("errorInfo":errorInfo);
- }
- info "logs: \n" + logs;
- if(logs.containKey("errorInfo"))
- {
- ths "Error happen in the CF execution";
- }
NOTE
a. In Line 3, Replace ".com" with appropriate domain extension based on your Data Center.
In case you have a custom name for the task status or ticket status, you can make suitable changes in the following lines:
b. Line 7 ==> Enter a status name to indicate the 'completed' status of a task
c. Line 9 ==> Enter the name of the status you want to be updated in the Ticket after the completion of all the associated Tasks
14. Click Save to save the custom function.
15. Click Save again to save the workflow.
We trust this solution will streamline your workflow! Stay tuned for more fresh insights and tips to help you make the most of Zoho Desk and optimize your experience.
Recent Topics
Series Label in the Legend
My legend reads 'Series 1' and 'Series 2'. From everything I read online, Zoho is supposed to change the data names if it's formatted correctly. I have the proper labels on the top of the columns and the right range selected. I assume it's something in
Dynamic Signature - Record owner
Hi everyone, I’m using Zoho Writer merge templates from Zoho CRM and have two questions: Owner signature: How can I automatically insert the CRM record owner’s signature in the merged document? I’m not sure where this signature is stored or how to reference
Set Warehouse based on Vendor
Greetings. I would like to set automaticaly the Warehouse based on the Vendor. Context: I am working on an adaptation of a Purchase Order to be used as a Quotation. I have defined that when a user has to raise a quote the Vendor will be "PROCUREMENT" I would like to set the Warehouse to a predefined value when "PROCUREMENT" is set as Vendor. I have tried to do with the Automation feature using the Field Update option, but Warehouse does not is listed as a field. Can you help? Thanks in advance.
Printing from Zoho Creator hosted on my own server to printers hosted on my clients local network
Hello. Fairly new to Zoho Creator and looking for best options to be able to print from my application hosted on my own server to any printer hosted on my clients own local network. Any advice is welcome. Thank you.
Add System Pre-Defined Lookup Field to Subform?
Hi there! New to using Zoho, so this may already exist, but I'm having trouble figuring it out. Is there a way to get the system pre-defined Account Lookup field (in our case, renamed to Company Name), as the starting point for a subform? In our company,
Numbered / bullet point List in Zho Cliq
Hi, is there a way to format chat messages in Cliq like this Topic 1 Hey, I finished this project yesterday etc... Topic 2 I am still working on this etc...
Cannot Access Subform Display Order in Deluge
As highlighted in this community post, we still have to deal with the significant limitation of not being able to access the user-sorted order of subform rows through Deluge. This creates a major disconnect between the UI capabilities and backend automation,
How many groups in Zoho Mail can I make?
I'm currently on the free plan, which has a limit of 10 users. Does that limit includes groups too? If not, what is the limit for groups? Thanks!
Feature Suggestion for Zoho Social: Auto-reply to Comments or Keywords
Hi Zoho team, I'd like to suggest a very specific feature that would be extremely helpful for customer engagement: the ability to automatically send a reply to comments on posts — either all comments or those containing specific keywords. For example,
Already have Zoho account. Not letting me log in
I already have a Zoho account that is associated with my Google email and my phone number. Even though I'm already logged in to Zoho, when I click on the mail icon to access my email, it takes me to the pricing page. When I click on the free option, it
ZOHO Mail App Not working
There seems to be an issue with Zoho Mail App today. It is not connecting to server, internet is working fine, tried uninstalling app and reinstalling, loading circle keeps spinning round. Is there an update on the way?
facing error 550 5.4.6 while sending emails
Please help me fix this issue
Allow Itemization for Recurring Expenses
For whatever reason, one cannot itemize a Recurring Expense. This capability should be added. The use cases to support this are largely the same as what they were to allow for itemization in Expenses. Anything that would need to be itemized for a regular
Zoho reply to not working. just reply to my self
Hello. i using on my wordpress website a contact form from Wsform. i can set the reply to email there. normally it works. but since i am using your wordpress plugin zoho mail it doesn`t work. its not using the reply to (email from customer). I just can
Can't receive any email from other platform
Hello,everyone, i'm just join zoho and create two email accounts for my own business. I was using it to get a verified email from stripe, but can't receive it. and I use my private gmail account to send test email twice, first time show below reply, but
Your Incoming has been blocked and the emails will not be fetched in your Zoho account and POP Accounts
Can some on help me regarding our account . thank you so much
Zoho Creator integration with Sage 50
Hi, Wondering if anyone has had any experience connecting Zoho to Sage 50 and could share any information on this matter. Thank you.
Conditional Email Forwarding
How can I set conditional email forwarding of the users? For example: Mail should be forwarded to a address only if it comes from a particular sender. So, I want such email forwarding, which forwards mails based on particular conditions, like the incoming
Incoming emails not appearing in Inbox
Hello, I have an issue with incoming emails sent from my website (domain: h2ostop.si). Emails are visible in the Sent folder, which means they are successfully sent through Zoho SMTP, but they never appear in my Inbox. Nothing arrives in Inbox, Spam,
Email Opt Out Question
Has the problem where if a customer is emailed opt out prevents you sending standard emails? For me this feature is simply to stop any email marketing and should not block people from receiving emails via Zoho mobile, which makes no sense.
Can No Longer Access Zoho Email Accounts from iPhone or iPad Apple Mail Apps ,.
Keeps asking for password, Says ID or password incorrect. Tried creating a new app specific password. Same result. Is this possibly related to the server maintenance. Have verified all email settings, userid and password. This has worked for years until
Latest update caused issue in using marathi typingzoho
With latest update now marathi typing does Not work in zohonotebook. I preferred zoho over other because it was supporting marathi font without any distortion.. But after new update,keyborad simply does not work
Login verification emails never received.
I can't login to my account. You send a verification email, but it never arrives. This is a common problem, frequently caused by some relay point out there classifying the sender as a spammer. Is there anything I can do to bypass this? Maybe get a text
Global lists for Multi select
It would be great if I could select a global list to use for a multi select dropdown filed.
Yahoo is rejecting e-mails sent from a Zoho server
Diagnostic-Code: 4.7.0 [TSS04] Messages from 136.143.169.51 temporarily deferred due to unexpected volume or user complaints - 4.16.55.1; see https://postmaster.yahooinc.com/error-codes Remote-MTA: dns; mta5.am0.yahoodns.net
Yahoo blocks e-mail sent from Zoho servers
Getting this for a bunch of Yahoo addresses. Do you know if some of your servers got blacklisted? Diagnostic-Code: 4.7.0 [TSS04] Messages from 136.143.169.51 temporarily deferred due to unexpected volume or user complaints - 4.16.55.1; see https://postmaster.yahooinc.com/error-codes
Working with dates and Function Field
Hello friends! I'm trying to add days to a date, however the field function will always shows 00:00:00 after the resultant date. How can I display only the date, whithout the time? toDate(input.request_date.addDay(input.Prazo_acordado),"MM,d,yyyy") The code above will result something like "11-Feb-2020 00:00:00", but I want to display only "11-Feb-2020"
What's New in Zoho Analytics - November 2025
We're thrilled to announce a significant update focused on expanding your data connectivity, enhancing visualization capabilities, and delivering a more powerful, intuitive, and performant analytics experience. Here’s a look at what’s new. Explore What's
Unable to send message;Reason:550 5.4.6 Unusual sending activity detected. Please try after sometime.
Please help my account got blocked automatically, can you help me how to avoid it? Thanks so much
temporary system errorlouis
J'essaye d'envoyer des mails avec mes 2 adresses mail qe nous avons sur le compte arthur@lepunch.fr et louis@lepunch.fr mais j'ai toujours le message temporaire system error, je reçois les mails mais impossible d'en envoyer a qui que ce soit
How to Cancel/Delete Queued Mail Merge?
Hi. I just tried to do a mail merge before realizing there's a limit on number of sends. I accidentally sent one of my lists twice, and all of those emails are currently queued. Is there any way to cancel or delete a queued mail merge? Would love to be
SOLVED: Stopping Multiple Invitations when sync with Google Calendar
I wanted to share this solution as I wasn't able to find it when searching through the Zoho community and via web search. The issue: When requestor books a meeting through Zoho Bookings, the requestor receives a confirmation email from both Bookings and
Need to add a new admin for my domain
Hello Zoho Support, I am the owner of the domain localeistanbul.com. The current super admin account (admin@localeistanbul.com) is not accessible. I do not want to reset or delete the existing account because I need to keep all existing emails. Please
Possible Fraud Site.
Hello. I received a text with the sender's name as zoho, claiming that my account was at risk and that I should sign in at https://verify.zohomails.ru/signin to verify my account. I signed in on the web address above, and a few days later someone hacked
Zoho mail to Teaminbox
Hello, We're searching for new mail program. Now I'm testing a bit with zoho mail and team inbox. My findings in the research: Pop mail throught zoho mail is almost instant. Any pop or imap via external provider takes a couple minutes to 15 minutes before
Crear tarea CRM con recordatorio desde Zoho Flow
Hola, estoy intentando crear desde Zoho Flow una tarea en CRM. Lo he logrado hacer pero sin recordatorio, ya que no se como se debe escribir el string adecuado. He probado varias alternativas, pero ninguna me funcionó hasta ahora. - FREQ=NONE;ACTION=EMAIL;TRIGGER=DATE-TIME:${FechaVto}
Inquiry Regarding Automated Assignment of Zoho TeamInbox Messages using Zoho Flow and Deluge
Hello, Our company is currently using Zoho TeamInbox, and we are interested in automating the assignment of responsible parties using tools such as ZOHO Flow and Deluge. Is it possible to achieve this? Allow me to provide more details. Currently, when
Multiple clients in one project
Hi team, What is the possibility to have more than one client to be linked for one project in the Zoho Books? Our business model is to have a project, and this project have expenses/bills, as well, we issue invoices for this same project to several customers.
Upgrade Zoho Desk Agent-Side Answer Bot to GenAI
Hello Zoho Desk Team, We hope you're doing well. Following the recent announcements and rollout of the GenAI-based Answer Bot in Zoho SalesIQ (Nova '25), we’d like to formally request a similar upgrade for the Answer Bot used by agents inside Zoho Desk.
Marketers' Space: The importance of warming up your sender domain
Hello Marketers, Welcome back to yet another post! Today, we'll talk about why warming up your sender domain matters. Imagine you've recently started a business and want to share the news with your customers. You've designed a great email campaign using
Next Page