Kaizen #127 - Circuits in Zoho CRM - Part 2

Kaizen #127 - Circuits in Zoho CRM - Part 2

Hello everyone!

We're back with part 2 of Circuits in Zoho CRM!
We are as excited as you are with this topic! Let's dive right in!

As promised, in today's post, we will discuss a use case, see how execution happens, and associate that circuit with a workflow.

In our next post(Yes! There's going to be another one!), we will associate the circuit with a button and a blueprint, view logs, and debug issues.

Sample use case - Loan Verification Process

Consider that we have a module in CRM called Customers, where we have personal information of customers, tax-related details, tax and personal ID verification details and status. Our aim is to check the requested loan amount, check eligibility, and then grant or reject it.
Here is a screenshot of a record in the Customers module.


Our condition is that whenever the loan amount is less than Rs. 500,000, the circuit should directly proceed to document verification. When the requested loan amount is greater than Rs. 500,000, we must check a few eligibility criteria before proceeding to document verification.
We can automate this entire process using Circuits, and execute it through a button, associate it with a workflow or a blueprint.

Let's take a look at the Circuit's flow.














Here are the different states of the Circuit that explain the logic.
  1. Get the loan record.
  2. Check the loan amount.
  3. If the loan amount is less than Rs. 500,000, proceed to document verification.
  4. If the loan amount is greater than Rs. 500,000, check the tax filing status.
  5. If tax is not filed, update the record's Loan Eligibility field with the value "Tax not filed. Hence, not eligible for loan".
  6. If tax is filed, fetch the applicant's credit score and check the eligibility.
  7. If the credit score falls short, update the record's Loan Eligibility field with the value "Issue with credit score".
  8. If the credit score is up to the mark, proceed to document verification—Personal ID and Tax ID verification.
  9. Update the details of the record to sanction the requested loan.

Let's discuss each of these states in detail.

1. Get the loan record

Builder View



Type: Get Record from Zoho CRM's states.
Action: Gets the details of the loan record from the Customers module. The output is in the following format.

{
    "ZohoCRM": {
        "record_id": "5575270000005762031",
        "user_id": "5575270000005379053",
        "module": {
            "api_name": "Customers",
            "tab_label": "Customers",
            "id": "5575270000001975002"
        }
    },
    "record": {
        "data": [
            {
                "Owner": {
                    "name": "Patricia Boyle",
                    "id": "5575270000001947001",
                    "email": "p.boyle@zylker.com"
                },
                "$currency_symbol": "$",
                "Tax_ID_Verification_Message": "Tax ID Verified Successfully",
                "$review_process": {
                    "approve": false,
                    "reject": false,
                    "resubmit": false
                },
                "$sharing_permission": "full_access",
                "Personal_ID_Number": "464694660655",
                "Personal_ID_Verification_Message": "Personal ID Verified Successfully",
                "Name": "Stephen Adams",
                "Manual_Approval": "Depends on score",
                "$state": "save",
                "$process_flow": false,
                "Tax_Score_Status": "Score is eligible for Loan",
                "$locked_for_me": false,
                "Tax_ID_Number": "GBHPS3618H",
                "id": "5575270000005762031",
                "Tax_ID_Verified_Date": "2024-02-26",
                "Loan_Eligibility": "Eligible for Loan",
                "$approval": {
                    "delegate": false,
                    "approve": false,
                    "reject": false,
                    "resubmit": false
                },
                "Modified_Time": "2024-02-29T12:26:11+05:30",
                "Tax_ID_Verification_Status": "Verified",
                "Tax_Return_Availability": "Yes",
                "Tax_ID_Verified_Time": "2024-02-26 23:28:39.0",
                "Personal_ID_Verified_Time": "2024-02-26 23:28:39.0",
                "Created_Time": "2024-02-29T12:26:11+05:30",
                "Amount": 600000,
                "$editable": true,
                "Personal_ID_Reference": "6cefa3d4-b87b-46a6-8814-b21fb422a28d",
                "$orchestration": false,
                "Tax_ID_Reference": "f6697aa8-8efc-4ee9-8dcc-0bc838755cb4",
                "Tax_Score": 450,
                "Personal_ID_Verification_Status": "Verified",
                "Personal_ID_Verified_Date": "2024-02-26",
                "$in_merge": false,
                "Locked__s": false,
                "Tag": [],
                "$zia_owner_assignment": "owner_recommendation_unavailable",
                "$approval_state": "approved",
                "$pathfinder": false
            }
        ]
    }
}

You can use any part of this output as input to other states. You can achieve this by using the JSON Path expression in the “result path” to traverse the result JSON of the state.
Result path allows you to combine state result with state input to pass as output. You can add the result path in the "Input/Output" section in the Builder view as well as the JSON in Code view.



In our case, we want to use the data inside the “record” JSON object. So, the result path will be $.record.
Result path is mandatory when you use the Get Record Zoho CRM state.
Next state: Check Loan Amount

Code View



2. Check Loan Amount

Builder View



Type: Branch
Action: Checks for the condition specified in the branch—check if the loan amount < 500,000. If yes, and Go to Documents verification state, else go to Check tax filing status state.
Next state: Check Tax filing status(if loan amount > 500,000)

Code View



3. Check Tax Filing Status

Builder View



Type: Branch
Action: Checks for the condition specified in the branch—if the tax filing status is Yes, fetch the credit score. Else, update the record with "Tax not filed; not eligible for loan".
Next state: Fetch Applicant Credit Score

4. Fetch Applicant Credit Score

Builder View



Type: Function
Action: Executes the CRM function "Tax Score Check" that holds the logic to get the basic eligibility stored in the Org variable "eligibility", compare it with the tax score of the applicant, and update the record, accordingly. Here is the snippet of this function.

Next state: Check eligibility of Credit Score

Code View


5. Check eligibility of Credit Score

Builder View



Type: Branch
Action: Checks for multiple conditions—if Tax Score Status = Eligible, go to Document Verification.
If Tax Score Status = Not eligible & the value of the field "Manual Approval" = "Not approved", update the record with "Issue in Tax Score".
If Tax Score Status = Not Eligible & "Manual Approval" = "Approved", proceed to document verification.
Next state: Depends on the condition that is met in the "Check Tax Score Eligibility" state.

Code View


6. Documents Verification Process

Builder View



Type: Parallel
Action: Verifies the Tax ID and Personal ID of the applicant.
Next state: Verification Details - Update Record

Code View


7. Tax ID Verification

Builder View


Type: Function
Action: Executes the function "Tax ID Verification" that has the logic to verify the tax details of the applicant.
Here is the snippet of this function.

Next state: Verification Details - Update Record

Code View


8. Personal ID Verification

Builder View


Type: Function
Action: Executes the function "Personal ID Verification" that has the logic to check for the applicant's personal details.
Here is how the function looks.

Next state: Verification Details - Update Record

Code View



9. Verification Details - Update Record

Builder View


Type: Function
Action: Executes the function "Update Customer Record status" that uses the Deluge Update Record integration task to update the "Loan eligibility" field.
Here is how the function looks.

Next state: End

Code View


10. Update Record - Tax Not Filed, Not Eligible

Builder View


Input/Output


Type: Function
Action: When the requested loan is greater than Rs.500,000 and the Tax Filing Status in "Not Filed", this state executes the function "Update Customer Record status". This function uses the Deluge Update Record integration task to update the "Loan eligibility" field, and takes the parameters "rec_id" and "loan_eligibility" with the values "$.ZohoCRM.record_id" and "Tax Filing is missing, Hence not eligible for the loan.", respectively.
Next state: End

Code View


11. Update Record - Issue with Credit Score

Builder View


Type: Pass
Action: When the tax score eligibility does not meet the requirement, this state ends the circuit's execution.
Next state: End

Code View



Testing and Execution

Let us see the execution of this circuit with a sample record ID.


When you click each state, you can see the input and output of that state.
When you click "View Logs", you can see how execution has happened, the payload for each state, the response, etc.


Associating this Circuit with a Workflow

Follow the steps mentioned in this article to create a workflow.
The condition for this workflow to execute the circuit is when the requested loan is greater than Rs. 500,000.
The Action is to execute the circuit. Choose the option "Execute Circuit" from the Instant Actions and select the Verification Process Circuit.
Save the workflow.


Let's test this workflow by creating a record in the Customers module with the loan amount less than Rs. 500,000.


As you can see, the workflow is triggered and executes the circuit when the loan amount is less than Rs. 500,000.
You can view the circuit's execution and other details as a related list.

Summary

Circuits allow you to automate entire business processes by allowing you to orchestrate functions along with your business logic as you see fit.
As you witnessed in this example, we used multiple independent functions written in CRM to achieve our business case through utilizing them in a circuit. This gives you the benefit of writing functions that can be reused in multiple places while saving you from the grief of dealing with huge volumes of code that are hard to maintain and harder to debug when written as a single function.

We hope you liked this post. We'll see you next week with another post on Circuits.
Let us know if you have any questions or feedback. We are listening!

Cheers!
Shylaja S

Additional Reading:

    Access your files securely from anywhere









                          Zoho Developer Community




                                                • Desk Community Learning Series


                                                • Digest


                                                • Functions


                                                • Meetups


                                                • Kbase


                                                • Resources


                                                • Glossary


                                                • Desk Marketplace


                                                • MVP Corner


                                                • Word of the Day


                                                • Ask the Experts





                                                          Manage your brands on social media



                                                                Zoho TeamInbox Resources



                                                                    Zoho CRM Plus Resources

                                                                      Zoho Books Resources


                                                                        Zoho Subscriptions Resources

                                                                          Zoho Projects Resources


                                                                            Zoho Sprints Resources


                                                                              Qntrl Resources


                                                                                Zoho Creator Resources



                                                                                    Zoho CRM Resources

                                                                                    • CRM Community Learning Series

                                                                                      CRM Community Learning Series


                                                                                    • Kaizen

                                                                                      Kaizen

                                                                                    • Functions

                                                                                      Functions

                                                                                    • Meetups

                                                                                      Meetups

                                                                                    • Kbase

                                                                                      Kbase

                                                                                    • Resources

                                                                                      Resources

                                                                                    • Digest

                                                                                      Digest

                                                                                    • CRM Marketplace

                                                                                      CRM Marketplace

                                                                                    • MVP Corner

                                                                                      MVP Corner







                                                                                        Design. Discuss. Deliver.

                                                                                        Create visually engaging stories with Zoho Show.

                                                                                        Get Started Now


                                                                                          Zoho Show Resources

                                                                                            Zoho Writer

                                                                                            Get Started. Write Away!

                                                                                            Writer is a powerful online word processor, designed for collaborative work.

                                                                                              Zoho CRM コンテンツ






                                                                                                Nederlandse Hulpbronnen


                                                                                                    ご検討中の方




                                                                                                          • Recent Topics

                                                                                                          • Download a writer template as .docx instead of .pdf.

                                                                                                            I have been trying to implement a feature to download a writer template as a .docx and got it working partly but it isn't good. Earlier I checked our code and I saw openurl("https://crm.zoho.com/crm/org121314/specific/Template.do?action=print&step=pdfPreview&id="
                                                                                                          • Allow the usage of Multi-Select fields as the primary field on "Layout Rules"

                                                                                                            We want to force our users to enter some explanation strings when a multi-select field has been utilized. I can't understand the reason for the usage restriction of Multi-Select fields as a primary field. This is a simple "Display hidden mandatory field
                                                                                                          • Ask the Experts 25: Experience the full spectrum of Zoho Desk’s autumn and spring releases for 2025

                                                                                                            Hello Everyone, We’re on the 25th episode of our ATE series! It's a true milestone in our live community interactions! It’s been an amazing journey since we started in October 2018. Zoho Desk has come a long way, evolving with the support of a wonderful
                                                                                                          • Extract Archived Projects using Zoho Projects API

                                                                                                            In my organization we archive the projects when they are already completed, charged, invoiced, so that only those that are still pending process remain active. I need to access all projects (active and archived) from an external system, but the API v3
                                                                                                          • Pincode based Product Restriction

                                                                                                            we have different types of products. 1) Very bulky items like plywood. 2) Too delicate items like glass These type of products we want to sell to local customers. Other products we want to supply all over India. There should be an option to restrict products
                                                                                                          • Ask the Experts: Five-hour live Q&A session with Zoho WorkDrive product experts

                                                                                                            Have questions about WorkDrive 5.0? Let’s talk! We recently launched Zoho WorkDrive 5.0, packed with powerful updates to help your team work smarter, stay secure, and get more value from your business content. From content-centric workflows and AI-powered
                                                                                                          • File upload support for subforms

                                                                                                            Dear All, Subforms help you add and track data related to your CRM records. We've always supported most of the commonly used field types in subforms, so as to cater to your business requirements. Now we're happy to extend support to file upload fields.
                                                                                                          • Two factor authentication for helpdesk users

                                                                                                            The company i work for wants use the helpdesk site in Zoho desk, as a place for their distribution partners to ask question and look for information about our product. The things there is suppose to go up there is somewhat confidential between my company
                                                                                                          • Circular record relationship in CRM

                                                                                                            Given there is a lookup in custom module Transactions creating a related list on the chosen Contact record. I. e. a lookup field on Transactions module points to Contacts. The related list on a Contact record can thus have have many transaction records.
                                                                                                          • Contact data removes Account data when creating a quote

                                                                                                            Hi, Our customer has address fields in their quote layout which should be the address of the Account. They prefill the information, adding the account name - the address data is populated as per what is in the account - great. However when they then add
                                                                                                          • Kiosk can't merge picklist or multiselect

                                                                                                            There is no ability to load a multiselect or picklikst field into a kiosk with the values that have been previously selected. So, I essentially have 3 unacceptable options: 1.)Load the value into a text string and include instructions like this: "Picklist
                                                                                                          • Multi-currency and Products

                                                                                                            One of the main reasons I have gone down the Zoho route is because I need multi-currency support.  However, I find that products can only be priced in the home currency, We sell to the US and UK.  However, we maintain different price lists for each. 
                                                                                                          • All new Address Field in Zoho CRM: maintain structured and accurate address inputs

                                                                                                            The address field will be available exclusively for IN DC users. We'll keep you updated on the DC-specific rollout soon. It's currently available for all new sign-ups and for existing Zoho CRM orgs which are in the Professional edition. Latest update
                                                                                                          • Is it possible to pull the Zoho desk data into Zoho analytics in real time

                                                                                                            Hi - I am looking to add more dashboards and reports of Zoho Desk in analytics. I see there is a schedule to pull the data into analytics, but I'm wondering if there is an option to pull the data in real time instead of a specific interval?
                                                                                                          • Enhance productivity with the revamped Zoho Sheet View

                                                                                                            Hello folks, For some time now, you've been able to use the Zoho Sheet View to quickly edit multiple records or to insert a batch of new records. Its tabular interface allows users to engage in these tasks productively. Despite this, the existing Sheet
                                                                                                          • How to set value of dropdown field to variable

                                                                                                            For the life of me, I can't figure out why the following code won't set input.status to the previousSelection. Steps to reproduce: 1. Click input.complete 2. input.status dropdown updates from '1-Backlog' to '4-Done' 3. Click input.complete again to deselect
                                                                                                          • [Product Update] TimeSheets module is now renamed as Time Logs in Zoho Projects.

                                                                                                            Dear Zoho Analytics customers, As part of the ongoing enhancements in Zoho Projects, the Timesheets module has been renamed to Time Logs. However, the module name will continue to be displayed as Timesheets in Zoho Analytics until the relevant APIs are
                                                                                                          • Issue in Annual Leave

                                                                                                            We created a policy to credit 21 days at the Start of the Year An employee has taken 16 days of leaves thought the year, so we expect to see 5 Leaves remaining right? But Zoho People is Showing 12 Days of Leave Balance Available If we check the Leave
                                                                                                          • [WEBINAR][MEA] Learn how to control your inventory and multi-channel sales with the Zoho Inventory & Zoho Books integration

                                                                                                            Hello there, We are hosting an exclusive live webinar tailored for businesses across the Middle East and African countries, where you'll learn how to take full control of your inventory and multi-channel sales while keeping your accounting perfectly in
                                                                                                          • Less clicks, more connection – the usability edge of Zoho Desk

                                                                                                            Imagine joining a new workplace, eager to prove your skills, partner with peers, learn new tools, and build a strong foundation for your career. The standards you've set could drive pressure into your head. You now discover the organization is using Zoho
                                                                                                          • Tip #3 Automating total item weight calculation for your sales orders in Zoho Inventory

                                                                                                            Hello, Hope the day is treating you well. Last week, we saw how we could automate the calculation of total shipping charges from numerous shipments for your sales orders and invoices. This week, we will see how you can automate the calculation of total item weight for your sales orders.  How does this work? First, you are required to capture the weight of all your items using a custom field. And when you create a sales order, you can either have the system display the individual weights for you or
                                                                                                          • Why Format section gets disabled when we create Merge Template over PDF

                                                                                                            I need some assistance I have a Client who is going to give certificates to users who passes his exam. So, I am using mail merge but in ZOHO writer after I upload the PDF and create merge Template over PDF the format Section gets disabled. My problem
                                                                                                          • Whatsapp Integration on Zoho Campaign

                                                                                                            Team: Can the messages from Zoho Campaign delivered through Whatsapp... now customers no longer are active on email, but the entire campaign module is email based.... when will it be available on whatsapp.... are there any thirdparty providers who can
                                                                                                          • Big Things Just Dropped in the SalesIQ Universe: Top Upgrades You’ll Love in Nova’25

                                                                                                            Nova'25 has landed, and it’s packed with meaningful upgrades to help you engage smarter, work faster, and scale with ease. Whether you're into proactive messaging, smarter automation, or better admin control, there's something here for everyone. Here's
                                                                                                          • WhatsApp Channels in Zoho Campaigns

                                                                                                            Now that Meta has opened WhatsApp Channels globally, will you add it to Zoho Campaigns? It's another top channel for marketing communications as email and SMS. Thanks.
                                                                                                          • How to calculate separate totals for Product Line Items filtered by category in Quotes?

                                                                                                            Hello! I'm working with Quotes in Zoho CRM and need help calculating conditional totals for line items. Current setup: I have two tables in my Quote template (Zoho Writer), both displaying Quoted Line Items Table 1 (top): Shows all products where Product
                                                                                                          • I Need Help Verifying Ownership of My Zoho Help Desk on Google Search Console

                                                                                                            I added my Zoho desk portal to Google Search Console, but since i do not have access to the html code of my theme, i could not verify ownership of my portal on Google search console. I want you to help me place the html code given to me from Google search
                                                                                                          • Zoho Desk API Documentation missing a required field

                                                                                                            We are trying to create a section using this information. Even after preparing everything based on that page, we still get an error. The error we get is this: {"errorCode":"INVALID_DATA","message":"The data is invalid due to validation restrictions","errors":[{"fieldName":"/translations","errorType":"missing","errorMessage":""}]}
                                                                                                          • Fetch Subform values through a lookup of a lookup

                                                                                                            Hi, I'm having an issue fetching the values of a subform through a lookup field through another lookup field. The code works perfectly to show me the subform row ID, but the second I try to get any readable data, it says "Error occurred. Please contact
                                                                                                          • Good news! Calendar in Zoho CRM gets a face lift

                                                                                                            Dear Customers, We are delighted to unveil the revamped calendar UI in Zoho CRM. With a complete visual overhaul aligned with CRM for Everyone, the calendar now offers a more intuitive and flexible scheduling experience. What’s new? Distinguish activities
                                                                                                          • Turn Decision Box to a button

                                                                                                            Dear all, I need your help on CSS to turn a Decision Box to a Button. I have a Decision Box like: Turn on/off to refresh the information. (on User Input, either True or False, will refresh the information) Now I want to simulate to treat it like a Refresh
                                                                                                          • Emails not being received from a particular domain

                                                                                                            Cannot receive any emails sent from atco.com Domain is in the spam whitelist so should be no reason for it not to be coming through. Have filed a ticket and besides a generic response of we are looking at it - it seems there is no actual support workers
                                                                                                          • Stock Count

                                                                                                            The stock count is a nice new feature, but we cannot figure out how to: 1. Use it without assigning to a person, we have a team or one of multiple do stock counts as do most any company. 2. Add any extra fields to what the "counter" sees. The most important
                                                                                                          • CRM x WorkDrive: File storage for new CRM signups is now powered by WorkDrive

                                                                                                            Availability Editions: All DCs: All Release plan: Released for new signups in all DCs. It will be enabled for existing users in a phased manner in the upcoming months. Help documentation: Documents in Zoho CRM Manage folders in Documents tab Manage files
                                                                                                          • Send Whatsapp message from Whatsapp template with custom variables

                                                                                                            Hi, I'm trying to do some basic integration for sending WhatsApp messages from Zoho CRM using Zoho Desk whatsapp templates. When creating new whatsapp template in Zoho Desk we can choose ticket related fields as variables but it's not clear how to use
                                                                                                          • How to remove some users in zoho accounts

                                                                                                            How to remove some users in Zoho accounts.
                                                                                                          • Outgoing blocked: Unusual activity detected.

                                                                                                            I just made payment for my Zohomail Today and have been debited so i will like to be Unblocked because this is what it says (Outgoing blocked: Unusual activity detected) Thank you i await your swift responses
                                                                                                          • Integrating with My Own Application and ZOHO CRM Simultaneously

                                                                                                            I have my own WhatsApp bot that uses my WhatsApp business account. I want to use the same phone number to integrate with ZOHO as well. What is the recommended way to do that? Should I integrate my application with ZOHO, forwarding messages whenever the
                                                                                                          • How do i move multiple tickets to a different department?

                                                                                                            Hello, i have several tickets that have been assigned to the wrong department.  I am talking about hundreds of automatically generated ones that come from a separate system. How can i select them all at once to move them to another department in one go? I can select them in "unsassigned open tickets view" but i can't find a "move to another department" option. I also can't seem to assign multiple tickets to the same agent in that same view. Could somebody advice?
                                                                                                          • Transferring CRM Attachments to Workdrive

                                                                                                            relatedrecords = zoho.crm.getRelatedRecords("Attachments","Conditions",conId); attachid = List(); for each ele in relatedrecords { attachementId = ele.get("id"); attachid.add(attachementId); } for each ele in attachid { counter = 1; downloadFile = invokeurl [ url: "https://www.zohoapis.com/crm/v2/Conditions/" + conId + "/Attachments/" + ele type: GET connection : "work_drive" ]; resp2 = zoho.crm.attachFile("Deals",dealId,downloadFile); resp3 = zoho.workdrive.uploadFile(downloadFile, dealWD, "PlaceHolder"+counter+"",
                                                                                                          • Next Page