Kaizen #188 - Building a Timer and Worklog Widget (Part 2)

Kaizen #188 - Building a Timer and Worklog Widget (Part 2)



Welcome back, Tech Wizards!

In Part 1, we developed a Timer Widget that logs active work sessions into the Timer Entries module. 

Now, let's enhance this functionality by transferring these entries into the Work Log subform within the Cases module using a workflow with Deluge function and APIs. We will also explore how to generate insightful reports from the Timer Entries module data.

Here is a consolidated view of the outcomes we aim to achieve through these sequential posts.



The following data model illustrates the modules and subforms involved in this use case to help you understand the structure more clearly.


Learn more about the Data Model and how it helps to simplify the understanding of complex processes.

Auto-Syncing Timer Entries to Case Work Logs

For automating the data transfer from the Timer Entries module to the Work Log subforms within Cases module, we will create a workflow rule with an instant action defined in Deluge function. 

Prerequisites

Create a subform named Work Log in the Cases module with the following fields. 

Field Name
Data Type
Actual Time Taken(in mins.)
Aggregate

(sum of Total Duration (in mins.) field in related case )
End Time
DateTime
Related to Case
Lookup to Cases
Related to Current Case
Checkbox
Start Time
DateTime
Timer Entry
Lookup to Timer Entries
Total Duration
Aggregate 

(sum of all the Total Duration (in mins.) field )
Total Duration (in mins.)
Number
Work Description
Multi Line

Follow the Building a Subform and  Working with Custom Fields help pages for creating the subform and fields in Zoho CRM UI, or you can also make Post Custom Fields API calls to create the custom fields in the subform. 

Step 1: Create a Workflow

  • Login to your Zoho CRM and go to Setup > Automation > Workflow Rules and click Create Rule.
  • Choose the Timer Entries module from the dropdown. Provide name and description for the workflow rule.
  • In the 'When' section of the workflow, choose the trigger as Record Action. In record action, define the trigger as when the End Time field is modified to any value. 
  • In the 'Condition' section, choose all timer entries. In the 'Instant Actions' section, select Function and choose Write your own

Step 2: Create a Deluge Function

  • In the pop box that appeared after choosing to write your own function. Fill in the following details as shown in the image and click Create.
  • A code editor will open, where you have to define the data transfer logic in Deluge. 

Code logic

The UpdateDataInWorkLog function automates the process of syncing a completed Timer Entry with its associated Cases in Zoho CRM by populating the Work_Log subform for each case.

Fetches Target Case Records

The function uses a predefined custom view (cvid) that we created in Part I of this post to retrieve a list of Case records that are eligible for update. It extracts their record IDs and prepares them for bulk processing.

paramMap = Map();
paramMap.put("cvid","5545974000011183885");
getRecordsResponse = invokeurl
[
type :GET
parameters:paramMap
connection:"crm_oauth_connection"
];
responseDataArray = getRecordsResponse.get("data");
idList = List();
for each  item in responseDataArray
{
idList.add(item.get("id"));
}
caseRecordsToUpdate = idList;

Retrieves Timer Entry Details

The selected Timer Entry (identified by recordId received through workflow trigger) is fetched to extract its key details like, Start and end times, Total time spent (duration), Work description, the Case it’s directly related to (if any).

record = zoho.crm.getRecordById("Timer_Entries",recordId,Map(),"crm_oauth_connection");
startTime = record.get("Start_Time");
endTime = record.get("End_Time");
totalTime = record.get("Total_Duration");
workDescription = record.get("Work_Description");
relatedToCaseId = "";
if(record.get("Related_to_Case") != null)
{
relatedToCaseId = record.get("Related_to_Case").get("id");
}

Prepares Work_Log Subform Entries

For each retrieved Case, a new subform entry is created in the Work_Log subform. This entry contains the time details, work description, and a reference to the Timer Entry. A flag (Related_to_Current_Case) marks whether the Timer Entry is directly associated with the Case.

caseRecordIds = caseRecordsToUpdate;
if(!caseRecordIds.isEmpty())
{
recordUpdateArray = List();
for each  caseRecordId in caseRecordIds
{
TimerArray = List();
TimerObj = Map();
TimerObj.put("Work_Description",workDescription);
TimerObj.put("Timer_Entry",recordId);
TimerObj.put("Related_to_Case",relatedToCaseId);
TimerObj.put("Start_Time",startTime);
TimerObj.put("End_Time",endTime);
TimerObj.put("Actual_Duration_in_mins",totalTime.toNumber());
info totalTime;
TimerObj.put("Related_to_Current_Case",caseRecordId == relatedToCaseId);
TimerArray.add(TimerObj);
recordUpdateObj = Map();
recordUpdateObj.put("id",caseRecordId);
recordUpdateObj.put("Work_Log",TimerArray);
recordUpdateArray.add(recordUpdateObj);
}

Bulk Updates Case Records

All Case records are updated in bulk via the Update Records API. Each gets its Work_Log subform updated or appended with the latest Timer Entry details.

updateRequestBody = {"data":recordUpdateArray};
updateResponse = invokeurl
[
type :PUT
parameters:updateRequestBody + ""
connection:"crm_oauth_connection"
];
}

Once done, click Save and associate the merge field (Timer Entry ID) with the function.


This workflow is triggered when the timer widget is stopped and the end time is updated in the corresponding timer entry record. 

Following is a GIF that illustrates how the data sync reflects in the case records.

Generating Reports from Timer Entries

With the Timer Entries and Work Log data in place, you can create comprehensive reports to analyze work patterns, SLA adherence, and productivity trends.
  1. Navigate to the Reports module and click Create Report.
  2. Choose Cases as the primary module and include the Work Log subform.
  3. Select the desired fields like Case Subject, Start Time, End Time, Total Duration, and Work Description. 
  4. Group data by fields like Case Owner or Status to gain insights into workload distribution and case progress.
  5. Apply filters as needed, such as date ranges or specific case statuses.

Refer to the Understanding and Building Report help page for more details. 

With the Timer Widget, automated data transfer to Work Logs, and insightful reporting, we have established a robust system to track and analyze multiple active work times within Zoho CRM.

If you have specific scenarios or challenges you'd like us to address in future Kaizen posts, feel free to share them in the comments or reach out to us at support@zohocrm.com.

Cheers!

------------------------------------------------------------------------------------------------------------------

Additional Reading 

------------------------------------------------------------------------------------------------------------------

    • Recent Topics

    • Help with Zoho CRM API Integration in C# WinForms (Token Generation Issue)

      Hi everyone, I need your help with integrating the Zoho CRM API into a C# desktop application. My goal is to build a WinForms app in Visual Studio that does the following: Fetch the full list of client projects (module: Deals) and display them in a searchable
    • Can we share the URL of My zoho Sheets on other websites?

      Hello everyone? I have sheets on Zoho and I want to share them on other websites like daraz, homeshopping, gepco duplicate bills, etc. I don't have much knowledge about online sharing question forums? I am a student and have a short survey about online
    • Add Support to Upload Inventory Items with Categories or Enable Separate Upload for Inventory Categories

      Currently, Zoho Inventory does not support uploading new items along with their parent and sub inventory categories using the item import feature. This creates challenges for businesses with structured inventory hierarchies when trying to upload items
    • in zoho books while categorizing need to add new name in category by replacing expanses how to edit or make changes need assistance

    • Tip of the Week #62– Use @mentions to loop in teammates.

      Ever been stuck on a customer query because you needed input from someone else on your team? Maybe you were unsure about a refund policy or needed help answering a technical question. So you forward the message … and wait. Or worse, you forget to follow
    • Suggestions for Kiosk Functionality Improvements in Zoho People

      Hello Zoho Team, I’d like to share some feedback and suggestions regarding the Kiosk functionality in Zoho People, as there are two important points that affect user experience and compliance: Visual Confirmation of Check-In Status It would be extremely
    • Needs Separate Permissions levels for Record Attachments

      Currently in Zoho Books Record attachments are tied to the general permission level For example if a role don't have the delete permission level they cannot delete the attachment as well If a role doesn't have the edit permission they cannot upload the
    • Zoho Books integration with Google workspace

      How do I integrate Zoho books with Google Workspace? The steps outlined on the Zoho help sections do not correspond to the actual user interface in Google Workspace. Zoho books is installed on admin level for all users, all users can access it from the
    • Fields of Look up in Custom Modules

      We need to create a custom module in Books for Proforma Invoices Now I created a Custom Module and added a Table and in the table added a lookup field and chose Items Now I want Specific fields of the item such as Tax, Item Cost etc but it only displays
    • Share work items across projects and users

      Hello everyone, We're thrilled to introduce a new feature in Zoho Sprints: "Share work item" Collaboration across projects and users is now easier with the introduction of the Share work item feature. You can now share work items with users who are not
    • Payment Terms Changing Upon Invoicing

      Hello! Our standard payment terms for 95% of our customers are Net 30, and all of our customers that these terms apply to have that setting n their customer profile. However, over the last week or so, when an invoice is generated the majority of these
    • How do I get a refund for email seats?

      Hi, I've been using Zoho for awhile and have been paying for 2 seats. Recently, I created another 9 seats, but I also found out that Zoho does not support cold emails, so these 9 seats created for this purpose became useless. It's within 24 hours that
    • Work Orders / Bundle Requests

      Zoho Inventory needs a work order / bundle request system. This record would be analogous to a purchase order in the purchasing workflow or a sales order in the sales cycle. It would be non-journaling, but it would reserve the appropriate inventory of
    • Narrative 1 - The significance of a business account

      Behind the scenes of a successful ticketing system - BTS Series Narrative 1 - The significance of a business account Setting up a proper business account is a crucial step that is often overlooked when launching a ticketing system for your service company,
    • Changed hosting for domain, Zoho mail stopped working.

      I have changed hosting fro my domain and from that time my zoho email stopped working
    • we need to add a Customer Number field to the PDF document templates

      Hello everyone. We are currently using Zoho Inventory for our small business operations and have found it to be a valuable tool. However, we’ve encountered a specific requirement: we need to add a Customer Number field to the PDF document templates (such
    • Joining Two Reports

      Hello Guys, I have three modules: - Orders - Custom module - Clients - Contacts - Basic Pay I am using the order module to store the revenue share amount for each order which will be paid a sales rep The Orders are child or clients so I am pulling a report
    • Power of Automation :: Notify users Automatically when @Mentioned in Tasks Description

      Hello Everyone, A custom function is a software code that can be used to automate a process and this allows you to automate a notification, call a webhook, or perform logic immediately after a workflow rule is triggered. This feature helps to automate
    • Recording a payment in foreign currency not allowed

      Hi, my base currency is CHF. I made an invoice in EUR, which have been paid with an extra amount (which are the fees I guess). When I record that payment from the invoice page, I can select the EUR bank account. But the amount received is above the invoice
    • Introducing WhatsApp integration and quick editing capabilities in Zoho Sign

      Hi there, Zoho Sign already helps users collect signatures via email and SMS, and we're happy to announce that you can now send documents and authenticate recipients right through WhatsApp. Some of the key benefits include: Communication with recipients
    • Order Wise Expense Tracking and Reporting Possible?

      Hi, We are a manufacturing firm and take up several orders at the same time. Each order will be associated with a single sales order and then once completed to a single invoice. When recording expenses, is it possible to associate each expense with a
    • Zoho Flow Needs to Embrace AI Agent Protocols to Stay Competitive

      Zoho Flow has long been a reliable platform for automating workflows and integrating various applications. However, in the rapidly evolving landscape of AI-driven automation, it risks falling behind competitors like n8n, which are pioneering advancements
    • Layout Rule Fields Appear in "Verify Details" Pop-up — Confirmed Working

      Hey everyone — just wanted to share a quick discovery. I created a Layout Rule in the Deals module that makes two fields show up (and required) when the stage is set to Closed Won or Closed Lost — one pick list and one text field. To my surprise, those
    • Can you please let us know how we can use Zoho for multi store?

      Hello Team, Can you please let us know how we can use Zoho for multi store because when we connect our plugin to Zoho and we create a product and then on another store when we create product with same name then product already exist error occurs, so how
    • Zoho One Home Dashboard - My Tasks (Projects) & My Overdue Work Items (Projects) have no data.

      The title basically covers the situation. I've set up the dashboard cards, and for a while, they were showing data. Now, they are both blank. Is anyone else experiencing this, or has anyone else experienced this, and if so, is there a fix?
    • Zakya - Release in North America?

      At Zoholics it was pitched like Zakya was already released in North America. However, when looking for it I couldnt find it. There isnt an integrated app available in Zoho. I figured maybe it was being released at Zoholics. Now over a month later, its
    • Custom Field Mapping in Outlook

      I have 10 custom fields in Zoho is there a way to create and map them to the outlook contact?
    • Custom module - change from autonumber to name

      I fear I know the answer to this already, but thought I'd ask the question. I created a custom module and instead of having a name as being the primary field, I changed it to an auto-number. I didn't realise that all searches would only show this reference.
    • Enhanced Zoho CRM and Office 365 calendar synchronization features!

      Dear customers, We're excited to share some significant improvements to our Office 365 calendar synchronization features, aimed at providing you with more control and a more personalized experience. What’s new Choose your Office 365 calendar: During the
    • Problemas de usarmos no Brasil

      Somos usuários a exatamente um ano do Zoho Recruit, agora migramos para o Zoho One. Temos enfrentado por diversas vezes problemas da ferramenta não estar realmente preparada para funcionar corretamente na lingua portuguesa. Problema esse não específico
    • CERTIFICADO DIGITAL - BRASIL

      Olá, Temos o ZOHO ONE e no Sign vemos de forma simples a assinatura digital, temos nos BRASIL certificado digital, de no CERTISIGN homologado pelo GOVERNO do BRASIL, há possibilidade de gerar a assinatura diante deste certificado?
    • Zoho Duplicate Reference Numbers

      I have 2 accounts through zoho. On one account if I enter a bill with the same number as a previous bill I get a warning message saying that there is already a bill with this number. However on the other account I do not get this message. How do I turn
    • integration between Zoho Site and Zoho Learn

      integration between Zoho Site and Zoho Learn so that when a user registers on the Zoho Site, their account is automatically created in Zoho Learn!! the use case i have pro plan in zoho site and zoho learn and i have puted the zoho learn domain in zoho
    • Automation #6 - Prevent Re-opening of Closed Tickets

      This is a monthly series where we pick some common use cases that have been either discussed or most asked about in our community and explain how they can be achieved using one of the automation capabilities in Zoho Desk. Typically when a customer submits
    • Not able to list or add contacts

      I am not able to get a list of contacts via api request. Tickets for example are listed via api even without orgId, so it shoud be similar. What is missing to reach the requirement. My aim ist to add a contact via API and then add a ticket with the contact
    • See contrat information from an account under the ticket

      Hi there, How can I program something to display created and selected contract on the ticket itself so my agents see it and can support correctly according to the contract and SLA ? Thank you :)
    • Weekly time log view

      The Weekly Time Log view is pretty nice. My users really like it when I show it to them. They like being able to pin ongoing tasks. Anyway, it's sort of hard to find. It is grouped with the Add Time Log button as a pull down. In my opinion, it should
    • Any Impact of Amazon Listings API on E-commerce Integration?

      Amazon sent the following message about changes to their APIs. Our only Amazon app / integration is Zoho Inventory's eCommerce for Amazon US, so the message below in bold gives us concerns about if Amazon's warning is referencing Zoho's Amazon US integration.
    • Working with Products that are non-tangible

      How does one create a 'service' in products? Is there a way to disable inventory functions for things like Sofware as a service? The services module doesn't look to be much help either. Not sure how to do this in CRM
    • ePOD Devices

      Has anyone tried and tested and devices that deliver ePOD (electronic proof of delivery)? We would like our drivers to use an ePOD device to get the customer signature The app should then be capable of updating the sales order to show delivery.
    • Next Page