Automation#19:Auto-Close Tickets Upon Task Completion

Automation#19:Auto-Close Tickets Upon Task Completion



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:
  1. // ----<<<< User Inputs >>>>----
  2. // --- Replace ".com" with appropriate domain based on your DC
  3. deskURL = "https://desk.zoho.in";
  4. // --- Enter a status name to indicate the 'completed' status of a task ---
  5. taskCompletedStatusName = "Completed";
  6. taskCanceledStatusName = "Canceled";
  7. // --- Enter the name of the custom status to be updated in the Ticket after the completion of all the associated Tasks ---
  8. statusNameToUpdateInTicket = "Closed";
  9. // ----<<<< Initial Configs >>>>----
  10. logs = Map();
  11. logs.insert("taskId":taskId,"associatedTicketId":associatedTicketId);
  12. tasksListToProcess = List();
  13. shallUpdateTicketStatus = false;
  14. //---------------------------
  15. try
  16. {
  17.  // ---- Check to find the Task and Ticket association ----
  18. isTicketAssociatedWithThisTask = !isNull(associatedTicketId) && !isEmpty(associatedTicketId);
  19.  if(isTicketAssociatedWithThisTask)
  20.  {
  21.   // --- Get the list of all tasks associated with this ticket ---
  22.   getTasksListApiParam = Map();
  23. getTasksListApiParam.insert("from":0,"limit":100,"isSpam":false,"sortBy":"createdTime");
  24.   logs.insert("getTasksListApiParam":getTasksListApiParam);
  25.   getTasksListApiResponse = invokeurl
  26.   [
  27.   url :deskURL + "/api/v1/tickets/" + associatedTicketId + "/tasks"
  28.   type :GET
  29.   parameters:getTasksListApiParam
  30.   headers:{"Content-Type":"application/json"}
  31.   connection:"closeticketbytask"
  32.   ];
  33.   logs.insert("getTasksListApiResponse":getTasksListApiResponse);
  34.   isValidToProcess_getTasksListApiResponse = !isNull(getTasksListApiResponse) && !isEmpty(getTasksListApiResponse) && getTasksListApiResponse.size() > 0 && getTasksListApiResponse.containsKey("data");
  35. logs.insert("isValidToProcess_getTasksListApiResponse":isValidToProcess_getTasksListApiResponse);
  36.   if(isValidToProcess_getTasksListApiResponse)
  37.   {
  38.   tasksListToProcess = getTasksListApiResponse.get("data");
  39.   }
  40.  }
  41. logs.insert("isTicketAssociatedWithThisTask":isTicketAssociatedWithThisTask,"tasksListToProcess_size":tasksListToProcess.size());
  42.  if(tasksListToProcess.size() > 0)
  43.  {
  44.   // --- Check to ensure that all tasks are completed or not ---
  45.   for each  currentTaskDetail in tasksListToProcess
  46.   {
  47.   currentTaskStatusName = currentTaskDetail.get("status");
  48.   currentTaskCompletedTime = currentTaskDetail.get("completedTime");
  49. if((currentTaskStatusName == taskCompletedStatusName || currentTaskStatusName == taskCanceledStatusName) && !isNull(currentTaskCompletedTime))
  50.   {
  51.   shallUpdateTicketStatus = true;
  52.   }
  53.   else
  54.   {
  55.   logs.insert("notCompletedTaskId":currentTaskDetail.get("id"));
  56.   shallUpdateTicketStatus = false;
  57.   break;
  58.   }
  59.   }
  60.  }
  61.  logs.insert("shallUpdateTicketStatus":shallUpdateTicketStatus);
  62.  if(shallUpdateTicketStatus)
  63.  {
  64.   // --- Update status field to the associated ticket ---
  65.   ticketUpdateApiParam = Map();
  66.   ticketUpdateApiParam.insert("status":statusNameToUpdateInTicket);
  67.   logs.insert("ticketUpdateApiParam":ticketUpdateApiParam);
  68.   ticketUpdateApiResponse = invokeurl
  69.   [
  70.   url :deskURL + "/api/v1/tickets/" + associatedTicketId
  71.   type :PATCH
  72.   parameters:ticketUpdateApiParam.toString()
  73.   headers:{"Content-Type":"application/json"}
  74.   connection:"closeticketbytask"
  75.   ];
  76.   logs.insert("ticketUpdateApiResponse":ticketUpdateApiResponse);
  77.  }
  78. }
  79. catch (errorInfo)
  80. {
  81.  logs.insert("errorInfo":errorInfo);
  82. }
  83. info "logs: \n" + logs;
  84. if(logs.containKey("errorInfo"))
  85. {
  86.  ths "Error happen in the CF execution";
  87. }
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.



    • Sticky Posts

    • Register for Zoho Desk Beta Community

      With the start of the year, we have decided to take a small step in making the life of our customers a little easier. We now have easy access to all our upcoming features and a faster way to request for beta access. We open betas for some of our features
    • Share your Zoho Desk story with us!

      Tell us how you use Zoho Desk for your business and inspire others with your story. Be it a simple workflow rule that helps you navigate complex processes or a macro that saves your team a lot of time; share it here and help the community learn and grow with shared knowledge. 
    • Tip #1: Learn to pick the right channels

      Mail, live chat, telephony, social media, web forms—there are so many support channels out there. Trying to pick the right channels to offer your customers can get pretty confusing. Emails are most useful when the customer wants to put things on record. However, escalated or complicated issues should not be resolved over email because it's slow and impersonal.  When you need immediate responses, live chat is more suitable. It's also quick and convenient, so it's the go-to channel for small issues. 
    • Welcome to Zoho Desk Community - Say hello here!

      Hello everyone! Though we have been here for a while, it’s time to formally establish the Zoho Desk Community; we’re really happy to have you all here! This can be the place where you take a moment to introduce yourself to the rest of the community. We’d love to hear all about you, what you do, what company or industry you work for, how you use Zoho Desk and anything else that you will like to share! Here’s a little about me. I am Chinmayee. I have been associated with Zoho since 2014. I joined here
    • Webinar 1: Blueprint for Customer Service

      With the launch of a host of new features in Zoho Desk, we thought it’ll be great to have a few webinars to help our customers make the most of them. We’re starting off with our most talked about feature, Blueprint in Zoho Desk. You can register for the Blueprint webinar here: The webinar will be delivered by our in-house product experts. This is a good opportunity to ask questions to our experts and understand how Blueprint can help you automate your service processes. We look forward to seeing

    Nederlandse Hulpbronnen


      • Recent Topics

      • Text Direction Control in Pagesense Popup Editor

        Hello Zoho Pagesense Team, We hope you're doing well. We’d like to submit a feature request to add text direction control in the Pagesense popup editor. Current Limitation: Currently, the popup editor does not provide native support for RTL (Right-to-Left)
      • Autosave in Pagesense Popup Editor

        Hello Zoho Pagesense Team, We hope you're doing well. We’d like to submit a feature request to enhance the Pagesense editor with an autosave functionality. Current Limitation: Currently, changes made in the Pagesense editor must be manually saved. In
      • Billing frequency is not displayed correctly.

        Hello There is an issue while displaying the billing frequency on a subscription quote. I am able to activate the subscription details and get this lovely overview: If I am adding a Plan which I charge quarterly, first of all it should be possible to
      • Creating Secret via Vault API

        Hi I am trying to create a secret through vault api.  This is the response I get. One thing I am not sure is how to decrypt the secretdata, how to get the secrettypeid? {     "operation": {         "result": {             "error_code": "",             "message": "Sorry, we are unable to process your request.",
      • Is It Possible to Hide Menu Option from Main Navigation?

        Is it possible to hide a menu option, e.g. Admin, from the Main Navigation based on some criteria, e.g. login = zoho.adminuser
      • Unleash the power of detail, with Table View.

        What use is context that's not available where you need it? With this in mind, we bring you the Table View. This feature will add more power to the way you organize and work through your ticket load. Table View comes in handy when you want more control over the ticket information you see. This is a nifty tool for users who find themselves limited in terms of the level of information that is being offered in the Classic View and Compact View. With an upper limit of 15 columns, agents can glean most
      • Kaizen #126 - Circuits in Zoho CRM - Part 1

        Hello everyone! Welcome back to another week of Kaizen! Today, we will discuss an exciting topic—Circuits in Zoho CRM. For starters, we will discuss what Circuits are, how beneficial they are for businesses, different views of a Circuit, and the different
      • Workdrive on Android - Gallery Photo Backups

        Hello, Is there any way of backing up the photos on my android phone directly to a specific folder on Workdrive? Assuming i have the workdrive app installed on the phone in question. Emma
      • Dynamically Fetching Lookup Field Display Value

        I have an audit trail form, Audit_Changes, that tracks old vs new values across different forms. For lookup fields, the old/new value is the ID, but I also need the display value. What's a best practice for dynamically fetching the display value of the
      • I have a problem. I use Zoho invoice

        I have a problem. I use Zoho invoice, which is that when I create an invoice for a customer with specific items, let's say the value of these items is 2100, but my customers are not the type who pay the entire invoice amount at once, as they divide the
      • Ability to Create New Items When Zoho Trident is Minimized via tray or taskbar icon

        Allow users to create new items (emails, calendar events, tasks, etc.) directly from the system tray icon or by right clicking the task bar icon, even when the window is minimized or not actively running in the foreground. This enables quick access to
      • I can not see Undeliverable emails from my Mass Email Leads activity in CRM

        I am sending email templates and I can not see the Undeliverables? I only receive the "Out of Office" replies and any manual replies from the lead. Can you please let me know where the Undeliverable emails are sent so I can use the information to clean up the database?
      • Select Zoho Contacts as Meeting Participants in Zoho Cliq

        Hello Zoho Cliq Team, We hope you're doing well. We would like to request an enhancement to the meeting scheduling functionality in Zoho Cliq. Current Limitation: When scheduling a meeting in Zoho Cliq, participants can only be selected from: Organization
      • Ability to Select External Users from Participants List When Scheduling Meetings

        Hello Zoho Cliq Team, We hope you're doing well. We would like to request an enhancement to the meeting scheduling experience in Zoho Cliq. Current Limitation when scheduling a meeting in Zoho Cliq: External users can be selected from the list only under
      • Kaizen #212 - Map Dependency Fields in Zoho CRM using APIs

        Hi Everyone!! Welcome back to another week of Kaizen series! Over the past few weeks, we have been addressing your questions and feedback shared through our Kaizen 200th feedback form. Thank you for your continued engagement and thoughtful queries. We
      • Outdated state in mexico

        Hello Zoho team, the drop down to add the state for customers, when they introduce their state in mexico has a city named “Distrito Federal” that name changed many years ago to “ciudad de mexico”. could you please update this so my clients can find the
      • Is anyone using Zoho Flow with airtable?

        I need to build a flow that collects data from airtable and uses some of that data to create folders and files in google drive. I have fully function version of this in zapier and want to migrate to zoho. I am trying to perform a very basic fetch from
      • AI in Zoho Workplace: A Sneak Peek into What’s Coming!

        Hello everyone, We’re super excited to share something we’ve been working on and we want you to be part of it! You may have seen our announcement blog post introducing a major evolution in how AI works within Zoho Workplace. Want to be among the first
      • Best way to share/download presentation files in Zoho without losing formatting?

        Hello Zoho Community, I often work with PPT/PDF files in Zoho Docs and share them with colleagues. While PDFs usually give a direct download option, I’ve noticed that PPT/PPTX files sometimes only open in the viewer without a clear download link. Is there
      • Workflow Failure - Notifications

        Good afternoon, I have just experienced an error whereby a Workflow failed, for a reason currently unknown. The problem is that one of my users had to flag this manually (thankfully he's very thorough) and this otherwise would have flown under the radar.
      • Introducing Bin Locations In Zoho Inventory

        Hello users, We are excited to let you know that your wait for the Bin Locations feature has now come to an end! Yes, you heard us right! We are here to introduce the much-awaited Bin Locations now in Zoho Inventory. But before we dive into the feature
      • Error "Invalid client task found corresponding properties" only when triggered from workflow ?

        Hi All, I am facing an error message I never encountered previously: Error in executing On Add - On Load script Error in executing thisapp.get_all_projects_api_call function. Line:(2) Error in executing thisapp.getAccessTokenFromRefreshToken function.
      • How to interpret Campaign report statistics - definitions/explanation

        I am trying to make sure I understand the Campaign report correctly Do you have a list of definitions for: Delivered - it has reached the recipient's inbox Campaign reach - is this the number that have opened the campaign email? Unique Opens Clicks/Open
      • Schedule a Call by Date and Time when a specific lead status is selected

        Hi Wanting to create a workflow where a call can be scheduled by date & time when a specific lead status is selected. Can only currently set the date by Due Date - Trigger Date - Plus 'x' day(s) Thanks
      • Zoho CRM's Copy Customization functionality now works across DCs, for customized accounts, and more

        Availability This feature is available in Standard, Professional, Enterprise, and Ultimate editions. These changes have been rolled out to all users in all DCs. For more information, please refer to these help documents: Overview | Instructions Hello
      • How can I bold text on Zoho Forms submit buttons?

        In the old theme builder, I could bold the text on a form's submit button. With the new theme builder, I can only change the text of the header or fields in the form, and not the button itself.
      • Hiding Pre-defined Views

        You can enhance Zoho with custom views - but you cannot hide the pre-defined views. Most users focus on 4 or 5 views. Right now for EVERY user EVERY time they want to move to one of their 4 or 5 views - they have to scroll down past a long list of pre-defined views - we don't use ANY of the pre-defined views. Adding the feature to allow a predefined view to be hidden completely or only visible to certain users would be a big improvement in usability for Zoho CRM. This feature is already available
      • [Integration Edition] Deluge Learning Series – Third-Party Integrations with Deluge | October 2025

        We’re excited to continue this three-month edition of the Deluge Learning Series: Session 1 – Integrating Zoho Apps with Deluge Using Built-In Integration Tasks Session 2 – Integrating Zoho Apps with Deluge Using invokeURL and invokeAPI Session 3 – Third-Party
      • Feature Request: Tag, Search, and Report on Individual Private Comments

        Zoho Desk Team, First, I want to say that we are extensive users of Zoho Desk and it is a core part of our support operations. We rely heavily on the private comments feature for internal communication, knowledge sharing, and maintaining a clear history
      • Zoho CRM Community Digest - August 2025 | Part 2

        Hello Everyone! Here's a quick round-up of handy tips, clever workarounds, and product updates from late August. Product Updates: Meeting Enhancements in Zoho CRM! Track whether a meeting is online, in-office, or at the client’s location using the new
      • Assistance Needed: Ticket Status Not Updating and Sorting by Last Customer Reply in Zoho Desk

        Hello, I’m facing two issues in Zoho Desk that I’d like your guidance on: Ticket Status Not Updating: When a customer replies to a ticket, the status does not change to Reopened. Instead, it remains in Waiting on Customer, even after the customer’s response
      • Round robin

        Hi, I'm trying to set up a round robin to automatically distribute tickets between agents in my team but only those tickets that are not otherwise distributed by other workflows or direct assignments. Is that possible and if so which criteria should I
      • Time Entry Notifications

        Hi All - I have support staff who place notes of their work in the time entry section of Zoho Desk. Is there a specific workflow or setting I need to enable to have the ticket holder updated via email when an entry is saved?
      • Change text in help desk

        Hi, Please let me know how can i change the this text, see screenshot.
      • Customer happiness customisation

        Hi, I was wondering if it's possible to somehow customise to whom and when customer happiness request is sent? Can you enable it only for selected tickets for example based on workflow or any other criteria (customer name, tag or anything else)? Also
      • No Zoho Support Response in Months

        I want to say that I love Zoho FSM, Books, and CRM, but the support is scary bad. About 2-3 months ago, I emailed Zoho FSM support with two specific issues I needed help with, and I have still not received one single response. I also submitted a support
      • Null

        If a result is null how do I make it so that a custom error pops up instead of the default error? Can someone write an example as if I were using the script builder?
      • Format a "return" message

        Good day, Is there a way to format the message of the "return" function in CRM deluge script?
      • Having Trouble Opening The Candidate Portal

        Recently am having trouble opening the Candidate Portal. It keeps loading but cannot display any widgets. Tried Safari, Chrome and Edge. Non of them work. Please solve the problem ASAP.
      • Tip of the Week - Spot Risky Sales with Conditional Formatting

        In Zoho Analytics, small tweaks can lead to big insights. One such feature is Conditional formatting based on other columns, your key to instantly spotting where sales success is overshadowed by product returns. Our tip this week shows you how to apply
      • Next Page