Kaizen #26 - Linking module and Multi-select Lookup fields

Kaizen #26 - Linking module and Multi-select Lookup fields

Hello everyone!
Welcome to another post in the Kaizen series!
This week, we will discuss how to add/delete values to a multi-select lookup field through linking modules via API and achieve many-to-many relationships.

Your data in CRM are often inter-related. For example, you may want to associate an account with contact. You can easily achieve this through a lookup field in the Contacts module that looks up to an account in the Accounts module.

As you can see, this is a one-to-many relationship. However, you can select only one value using a lookup field.

Now, consider a scenario where you want to associate the same contact with two accounts. Here, the lookup field is not helpful as it lets you choose only one record.

To establish many-to-many relationships, you must use the multi-select lookup field.

Example Scenario
Problem
Zylker Real Estates manages buying/renting apartments. They have two modules in their CRM—Listings and Leads.

Jack Smith is one of the leads and is interested in looking at three listings (C-807, B-196, and H-786).
Apart from Jack, three other leads—Jane, Jill, and Derek—are all interested in looking at C-807.

When you create a Lead record for Jack Smith, there must be a provision to choose from the three listings he is interested in. Also, the listing C-807 should have four leads associated with it. So there is a need to choose many values from a lookup field. A regular lookup field lets you choose only one value.

Solution
In this case, Zylker Real Estates could create a multi-select lookup field in the Leads module, as shown in the image below.



So, data in both modules would look like below.



Consider Jack Smith requests a negotiation for each listing, and the negotiated rent differs for all three listings. Now, where can this field be stored?
  • It cannot be a field in Jack's record, as there are three different prices based on each house.
  • It cannot be a field in the listing's record either, as other prospects apart from Jack may have offered different negotiations for it.

To manage this diversity, Zoho CRM allows you to create a Linking Module. Each association between two modules (created via a multi-select lookup field) is a record in the linking module. So, when three listings are associated with Jack, three separate records are created in the Linking Module that lets you create separate Negotiated Rent in each record.



Adding values to a multi-select lookup field through an API
When you manipulate records through the API, it is not possible to add values to a multi-select lookup field directly from the module where the multi-select lookup field is present, like how you add values to a lookup field.
Instead, you can create a record in the linking module by passing the values of both the lead and listing's IDs.
Now, let us try to add another Listing (A-101) to the lead Jack Smith.

Details required
  • API name of the Linking module. You can obtain this through the Modules API. The value "linking" of the key "generated_type" indicates that this is a linking module. In our case, it is Leads_vs_Listings.
  • API Names of the lookup fields pointing to the Leads and the Listings module. They are the fields of the Linking module. Here, they are Interested_Leads and Interested_Listings.
  • Record IDs of the records from the two modules that you want to associate with the multi-select lookup field.

Request URL: {{api-domain}}/crm/v2/Leads_vs_Listings
Request Method: POST

Sample Input

{
    "data": [
        {
            "Interested_Leads": {
                "id": "3652397000001970024" //ID of the Lead Jack Smith
            },
            "Interested_Listings": {
                "id": "3652397000001988001" //ID of the Listing A-101
            }
        }
    ]
}
Sample Response

{
    "data": [
        {
            "code": "SUCCESS",
            "details": {
                "Modified_Time": "2020-04-02T18:27:10+05:30",
                "Modified_By": {
                    "name": "Patricia Boyle",
                    "id": "3652397000000186017"
                },
                "Created_Time": "2020-04-02T18:27:10+05:30",
                "id": "3652397000001987014",
                "Created_By": {
                    "name": "Patricia Boyle",
                    "id": "3652397000000186017"
                }
            },
            "message": "record added",
            "status": "success"
        }
    ]
}
In the UI, for the lead Jack Smith



 In the UI, for the listing A-101



In the UI, in the linking module



Deleting/dissociating values from a multi-select lookup field through an API
Deleting the record from the linking module deletes the association between the two modules.
Here, let us delete the association between the lead Jack Smith and the listing A-101. Pass the ID of the record that associates these two in the linking module.

Request URL: {{api-domain}}/crm/v2/Leads_vs_Listings/{{record_id_in_the_linking_module}}
Request Method: DELETE

Sample URL: {{api-domain}}/crm/v2/Leads_vs_Listings/3652397000001987014

Sample Response

{
    "data": [
        {
            "code": "SUCCESS",
            "details": {
                "id": "3652397000001987014"
            },
            "message": "record deleted",
            "status": "success"
        }
    ]
}
In the UI, for the linking module





Fetching the Related Records of a Linking Module
When you view a record's details, you can find a multi-select lookup field as a related list in the associated module. In our case, you can find Listings as a related list in the Leads module, while Leads is a related list in the Listings module.

This related list will also display details of the Linking Module, if you have chosen to create one, as in the below image.



To fetch the related list details from a module, you need
To fetch the related records associated with the Listings module, the request URL must contain the module name, the ID of the record whose related records you want to fetch, and the related list API name.

Let us now fetch the related records associated with the Listing H-786.

Request URL: {{api-domain}}/crm/v2/Listings/3652397000001978027/Leads3
Request Method: GET

Sample Response

{
    "data": [
        {
            "$approval": {
                "delegate": false,
                "approve": false,
                "reject": false,
                "resubmit": false
            },
            "Owner": {
                "name": "Patricia Boyle",
                "id": "3652397000000186017",
                "email": "p.boyle@abc.com"
            },
            "Modified_Time": "2020-04-02T17:54:05+05:30",
            "Email": null,
            "$currency_symbol": "Rs.",
            "Interested_Leads": {
                "name": "Jack Smith",
                "id": "3652397000001970024"
            },
            "Interested_Listings": {
                "name": "H-786",
                "id": "3652397000001978027"
            },
            "Created_Time": "2020-04-02T16:12:27+05:30",
            "$review_process": null,
            "$editable": true,
            "$orchestration": null,
            "Name": "10004",
            "Last_Activity_Time": "2020-04-02T17:54:05+05:30",
            "Modified_By": {
                "name": "Patricia Boyle",
                "id": "3652397000000186017",
                "email": "p.boyle@abc.com"
            },
            "$review": null,
            "$state": "save",
            "$process_flow": false,
            "Negotiated_Rent": "4500",
            "id": "3652397000001980020",
            "Created_By": {
                "name": "Patricia Boyle",
                "id": "3652397000000186017",
                "email": "p.boyle@abc.com"
            },
            "Secondary_Email": null,
            "Email_Opt_Out": false,
            "$approved": true
        }
    ],
    "info": {
        "per_page": 200,
        "count": 1,
        "page": 1,
        "more_records": false
    }
}

In the UI,



We hope you found this post useful. Write to us at support@zohocrm.com if you have any questions, or let us know in the comment section.

Cheers!

    • Recent Topics

    • Zoho Bookings - Reserve with Google

      Does Zoho Bookings plan to to integrate with Reserve with Google?
    • How to add Zoho demo site page designs to my Zoho Sites website

      Hi, I would like to add the design from the following demo URLs into my current Zoho website. I have already created two new pages on my site, named “Menu2” and “Menu3.” For the “Menu2” page, I want to use the design from this demo: https://naturestjuice-demo.zohosites.com/menu
    • Digest Août - Un résumé de ce qui s'est passé le mois dernier sur Community

      Bonjour chère communauté ! Voici le résumé tant attendu de tout ce qui a marqué Zoho le mois dernier : contenus utiles, échanges inspirants et moments forts. 🎉 Découvrez Zoho Backstage 3.0 : une version repensée pour offrir encore plus de flexibilité,
    • Text snippet

      There is a nice feature in Zoho Desk called Text Snippet. It allows you to insert a bit of text anywhere in a reply that you are typing. That would be nice to have that option in Zoho CRM as well when we compose an email. Moderation Update: We agree that
    • Kaizen #206 - Answering your Questions | Displaying Related Purchase Orders from Zoho Books in CRM Deals using Queries

      Hello everyone! We're back with another post in the Kaizen series. We're grateful for the feedback we received from all of you! One of the questions we received was "I would like to see the list of Purchase Orders in Zoho Books for a Deal in CRM." We
    • Add Analytics function for Title case (capitalising each word in a string)

      At present, you can only capitalise each word in a string in Analytics during data import. It would be really useful to be able to do this with a formula column, but there is no Title Case function.
    • How to conditionally embed an own internal widget with parameters in an html snippet?

      Hello everyone, I'm trying to create a dynamic view in a page using an HTML snippet. The goal is to display different content based on a URL parameter (input.step). I have successfully managed to conditionally display different forms using the following
    • Where can I find rejected inbound mails and their reason for rejection

      Hi, I was recently made aware by a mailing list which I am subscribed to (ffmpeg-devel@ffmpeg.org) that my Zoho mail Mail account is rejecting some emails. If I look under Admin Panel > Security & Compliance > Quarantine > Incoming, the list there is
    • Sync more than one Workdrive

      Hello Please I'm facing some difficulties since some days. In my company we have many zoho accounts in different organisations. And I have to find a way to sync all these Workdrives. I spend many hours to search it on zoho Workdrive but no solution. Could someone help me ? Any idea how I can achieve it ? Thanks in advance. Regards
    • Zoho writer unable to merge documents to PDF with basic fonts in Hebrew or fonts from my computer

      I created several forms that will be merged into PDF files through Zoho Writer and I am unable to receive the PDF in the basic fonts of the Hebrew language or in the fonts I have on my computer. The writer exports to PDF an exchange font that looks very
    • Base Currency Adjustment Reversal

      Two questions surrounding the base currency adjustments (BCA). I recently ported over from QB so I need to enter the base currency adjustments. In QB, it will calculate the BCA for you at the end of the year and then reverse it at the top of the following year. Makes sense. Does Zohobooks not do this as well? I created a BCA for Dec 31, 2016 but no reversing entry was made Jan 1, 2017. Am I supposed to manually do a reversal? I'm not even allowed to post journals directly to the 'exchange gain loss'
    • Please implement UAE Central Bank FX rates

      Hello, as I understand from your knowledge base, any UAE business account created from September 15, 2018 does not have foreign exchange rates fetched automatically. This is a serious inconvenience and I am not sure why ZOHO has not looked into the ways
    • Search Records returning different values than actually present

      Hey! I have this following line in my deluge script: accountSearch = zoho.crm.searchRecords("Accounts","(RS_Enroll_ID:equals:" + rsid + ")",1,200,{"cvid":864868001088693817}); info "Account search size: " + accountSearch.size(); listOfAccounts = zoho.crm.searchRecords("Accounts","(RS_Enroll_ID:equals:"
    • Super Admin Access to All Courses and Spaces in Zoho Learn

      Dear Zoho Learn Team, We hope this message finds you well. We are using Zoho Learn extensively for internal and agent training. While managing our courses and spaces, we encountered a significant limitation regarding admin access and course management.
    • Print checks for owner's draw

      Hi.  Can I use Zoho check printing for draws to Owner's Equity?  This may be a specific case of the missing Pay expenses via Check feature.  If it's not available, are there plans to add this feature?
    • [New Release 2024] Create and embed custom capabilities across CRM with Kiosk Studio, our latest no-code tool

      [Update | New series] We've started publishing a series of posts on Kiosk Studio. It's called Kiosk Studio Sessions and you can check out the first one here! [Update | 15 Oct} Session #2 is live! This one will look at how to create a kiosk for your call
    • Revenue Management: #10 Common Mistakes while Recognizing Revenue

      We are at the end of the series on Revenue Management, covering how different businesses recognise revenue. Even with clear standards like ASC 606 and IFRS 15 in practice, businesses often struggle with the nuances of revenue recognition. Especially growing
    • Windows Desktop App - request to add minimization/startup options

      Support Team, Can you submit the following request to your development team? Here is what would be optimal in my opinion from UX perspective: 1) In the "Application Menu", add a menu item to Exit the app, as well as an alt-key shortcut for these menus
    • integarting attachments from crm to creator

      when i tried to integrate pdf attachments from crm to creator via deluge i am getting this error {"code":2945,"description":"UPLOAD_RULE_NOT_CONFIGURED"} the code i used is attachments = zoho.crm.getRelatedRecords("Attachments","Sales_Orders",203489100020279XXX8);
    • Search Option

      🚫 Current Limitation: As of now (September 2025), Zoho FSM lacks a global search functionality, which makes it difficult to quickly: Find specific Work Orders by number or keyword Search for customer records or contact info Locate assets, jobs, or service
    • Mobile Chat Window - Full Screen

      Hello, The mobile chat window takes up the full screen, which is highly confusing for most customers! Using a desktop machine, I see the same happens when reducing the browser width to 800px or below. This suggests that it responsive web design, causing the switch to full screen. Can we fix this very annoying behaviour ourselves using a custom css file? If so, can you please let me know how? Thanks
    • Is it possible to customize ZC Themes?

      I understand you can choose a layout and customize Brand Color, App Header, Menu, and Sub-Menu components, but can you override some of the default theme settings with CSS or a config file? For example, - Table highlight color - Listview auto filter highlight
    • Is it possible to create Custom function-based Lookup field in Zoho CRM

      Is it possible to create a custom function-based lookup field in Zoho CRM? If so, how? Use case: Need to fetch users from Zoho Projects into a dropdown field in Zoho CRM.
    • @mention in comments no notification

      Hi, hope someone can help. When we @mention someone in the comments in Zoho Creator, how is that user notifed as we don't get anything on email or in the app notifications. 
    • Zoho unified inbox

      The new changes have definitely improved things for switching between accounts.  But zoho still desperately needs a unified inbox.  It sucks to have to enter filters and folders for each and every inbox.  This seems like such a simple thing, i wonder why Zoho hasn't done it?
    • Add "Running Balance" column to Account Transaction Reports

      Hello, Currently Zoho Account Transaction Reports give you the opening balance, then lists the transactions, then provides the closing balance.  It would be great if you could add a column on the far right that shows the "Running Balance" on the account after each transaction.  There are many times when analyzing or tie-ing out transactions that this would be very helpful.  I currently have to frequently run a tape on my adding machine to get balance totals after a specific transaction on the list.
    • Unified customer portal login

      As I'm a Zoho One subscriber I can provide my customers with portal access to many of the Zoho apps. However, the customer must have a separate login for each app, which may be difficult for them to manage and frustrating as all they understand is that
    • 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.
    • error : Object code : 6500

      b3 = map(); b3.put("name", "Test Project Name"); updateprojects2 = invokeurl [ url :"https://projectsapi.zoho.eu/restapi/portal/era0130/projects/169495000000928007/" type :PUT parameters: b3 connection:"in2" ]; info b3 ; info updateprojects2; ------------
    • How to book GST paid in zoho books

      hi, i am a new user to Zoho books and not able to book GST paid in books, kindly suggest how i can book it in books. thanks, siddharth
    • I got unknown charge from Zoho

      Good day, I need help disputing a charge I don't know from, zoho. I have ZohoMail and ZeptoMail. I purchase credits for ZeptoMail, and for ZohoMail I am not subcribed.
    • Function 56: Automatically enable the option for customers to pay via bank account

      Hello everyone and welcome back to our series! One of the key features of Zoho Books is its integration with multiple payment gateways, allowing you to receive online payments for your invoices. This ensures faster payments, automates payment tracking
    • Attach Files to Your Notecards and share them on the go!

      Hey everyone! We’re excited to share a feature many of you have been asking for — you can now attach files directly to your text notecards and share with ease! 🙌 This update was built with your feedback in mind, especially for those who wanted a simple
    • 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
    • How to add a % Growth column for year-over-year comparison (2024 vs 2025)

      Hello, I am trying to build a monthly revenue comparison between 2024 and 2025 in Zoho CRM Analytics. My current setup is: Module: Deals (Affaires) Filter: Stage = Closed Won Date field: Closing Date Grouping: By Month Metrics: Sum of Amount for 2024,
    • How to searchByCriteria records that are under approval?

      I need to search for both approved and pending approval records Is that possible with this method? Or I need to a different method? var priceReqID = $Page.record_id; log(priceReqID); var records = ZDK.Apps.CRM.Price_List_Item.searchByCriteria("Price_Request:equals:"
    • How to add Simple Analytics to Zoho Pages?

      I have a website with Zoho Pages, how do I add Simple Analytics on it? They seem to have code they need to be embedded https://docs.simpleanalytics.com/script
    • Cant seem to delete an email account

      Hello, I have researching for 4 days how to delete an email account and I am absolutely without a clue. The email account I am trying to delete is support<AT>fyshoes<dot>com. It's the first email account I made and it (is???) was associated with the super user (me). I have since changed it to adming<AT>fychoes<dot>com and I see the support email in my list but I just cant seem to get rid of it. Ultimately I want to associate that email account with another user that I want to add. This is really
    • Import data into Multi-Select lookup field from CSV/Excel

      How to import data into a multi-select lookup field from the CSV/Excel Sheet? Let's say I have an Accounts multi-select lookup field in the Deals module and I want to import the Deals with Accounts field. Steps:- 1. Create/edit a multi-select lookup field
    • Script that deletes a record?

      We're using WP Plugin "Integration for WooCommerce and Zoho Pro", and have created a couple of Feeds to send data to Zoho. We are trying to create Contact records, but only based upon condition. Tried to make it with small Deluge function and Workflow,
    • Next Page