Kaizen #125 Manipulating Multi-Select Lookup fields (MxN) using Zoho CRM APIs

Kaizen #125 Manipulating Multi-Select Lookup fields (MxN) using Zoho CRM APIs

Hello everyone!
Welcome back to another week of Kaizen. In last week's post in the Kaizen series, we discussed how subforms work in Zoho CRM and how to manipulate subform data using Zoho CRM APIs.
In this post, we will discuss how to manipulate a multi-select lookup fields using Zoho CRM APIs.

Multi-select lookup field

The Multi-Select Lookup Field enables you to establish a many-to-many relationship between two different modules in CRM. It allows you to associate multiple records with each other, from two different modules. 
These associations are stored in an individual module called "Linking Module". Consider there are two modules, Employees and Skills. The Employees module contains details regarding Zylker's workforce, and the Skills module contains details regarding various skills like Social Media Marketing and Content Marketing.
We want to associate multiple skills to an employee. So, a multi-select lookup can be created in the Employees module. When doing so, similar multi-select lookup field will be automatically created in the Skills module, along with the EmpXSkills linking module by Zoho CRM. The underlying data model is described in the below image.
The above chart shows the data model representation when you create a multi-select lookup field in a module. Here, there are two lookup fields—one pointing to the Employees module and the other pointing to the Skills module.
In the linking module, two lookup fields (lookup fields with api names - Employees and Skills) will be created. The lookup fields, one pointing to Employees and the other pointing to Skills from the linking module, establish a connection between the linking module and its associated module.

How to associate an employee's skills while creating an Employee record through the Insert Records API

API names you need before invoking the API
  • The API name of the multi-select lookup field in the modules you want to insert data.
  • API names of the lookup fields in the linking module. Eg: here the API Name of the linking module is "EmpXSkills" and the corresponding lookup field api names are "Employees" & "Skills". You can use the Fields Metadata API for Employees and Skills to get these details.
Step 1
Know the API name of the multi-select lookup field in the module (In our case, Skills is the multi-select lookup field in the Employees module)

To know the API names of the multi-select lookup fields, make a GET - Fields Metadata API call. Among all the Employee's fields, multi-select lookup field can be identified by the json key data_type with the value multiselectlookup. The corresponding connected module can be found from the json connected_module. Below is the API call & response for such a multi-select lookup field.

Request URL : {api-domain}/crm/v6/settings/fields?module=Employees
Request Method: GET

Sample Response: 

The above highlighted keys are the details of the Multi select lookup field. The corresponding keys are explained below:

"multiselectlookup": {
                "display_label": "Skills",   //Display label of the MxN field in the Employees module
                "linking_module": {
                    "api_name": "EmpXSkills", //API name of the linking module
                    "id": "5725767000002166520"
                ...
                "lookup_apiname": "Employees", //API name of the Employee lookup field in the linking module
                "connected_module": {
                    "api_name": "Skills", //API name of the connected module
                    "id": "5725767000002165263"
                },
                "api_name": "Skills_In_Related_List", //API of the related list of the connected module Skills in the Employees module.
                "connectedfield_apiname": "Employees", //API Name of the multi-select lookup field in the connected module (Skills)
               "connectedlookup_apiname": "Skills", //API name of the Skills module lookup field in the linking module.
                "id": "5725767000002166655" //Related List ID
            },
                ...

Step 2
Using the api_name of the linking module, make a GET Fields metadata API call to get the list of fields (along with their api_name) present in it. It lists all fields of the linking module in the response. 
Sample Request and Response

Search for the "data_type": "lookup" in the response. The lookup fields represent the connected modules in association with the linking module.
For example, in our case, the response will have two lookup fields. One of the lookup fields (with api name Employees) points to the Employees module, and the other one (with api name Skills) points to the Skills module

Step 3
Associate records via the Multi-select lookup field using the Insert Records API

To associate records via the MxN field, you need to know the IDs of the records in the Skills module. Here is the input body to insert the skills in the Employee module with the multi-select lookup field Skills
Here is the input body to insert a new Employee record and associate a Skills record to it using the MxN field.

Request URL: {{api-domain}}/crm/v6/Employees
Request Method: POST
Sample Input:
{
    "data": [
        {
            "Name": "Patricia",
            "Email": "patricia@mail.com",
            "Position": "Marketing Specialist",
            "Year_of_Experience": 5,
            "Skills": [ //API name of the multi-select lookup field in Employee module
                {
                    "Skills": { //API Name of the lookup field pointing to the Skills module in the linking module
                        "name": "Marketing",
                        "id": "5725767000002149427" //Record ID in the Skills module 
                    }
                },
                {
                    "Skills": {
                        "name": "Social Media Marketing",
                        "id": "5725767000002149476" 
                    }
                }
            ]
        }
    ]
}



How to disassociate an employee & skills relation while updating an Employee record through the Update Records API 

Request URL: {{api-domain}}/crm/v6/Employees
Request Method: PUT

Sample Input:

{
    "data": [
        {
            "id": "7890710000097291",
            "Name": "Patricia",
            "Email": "patricia@mail.com",
            "Position": "Marketing Specialist",
            "Year_of_Experience": 5,
            "Skills": [
                {
                    "_delete": null, //This association in the linking module will be deleted
                    "id": "5725767000008126002" //Record created in the linking module
                }
            ]
        }
    ]
}

Sending _delete:null will cause delinking of the association.

How to associate an employee's skills via "Linking Module"

You can associate the relationship between Employees and Skills module by creating records in the Linking module (EmpXSkills). Use the API names for the corresponding lookup fields, Employee (API Name: Employees) and Skills (API Name: Skills) in the input body.

Request URL: {{api-domain}}/crm/v6/EmpXSkills
Request Method: POST

Sample Input
{
   "data": [
        {
            "Name": "Patricia",
            "Employees": { 
                "id": "5725767000002161001" //unique record ID in the Employees module. GET your ID here
            },
             "Skills": { 
                "id": "5725767000002149476" //unique record ID in the Skills module. GET your ID here
            }
        }
    ]
}


Sample Response


The id in the above response is the Primary Key ID of an Employee-Skill association record in the linking module. This ID can later be used to do specific operations like association update or deletion via API.

How to disassociate an employee & skills relationship via "Linking Module"
Use the Delete Records API to delete the record which corresponds to the specific relation between Employee and Skills module in the EmpXSkills module. You can get the record ID for the specific association using the Get Records API for the linking module. 
Use the Delete Record API to delete the specific record, thereby deleting the specific association between the Employee and Skills record. Please note that only the association is removed, and not the individual records. 
Sample Request and Response



When to use create/update operation in Employees/EmpXSkills module?

Use "Employees" module: When you want to create/update records in the Employees module, and associate the record with a Skills record in a single API call.
Use "EmpXSkills" module: When you want to associate/disassociate the relationship between existing Employees and Skills records. 

Retrieve data via COQL API and Bulk Read API

There may be situations where you need to fetch records based upon certain conditions.
For example, Zylker's HR team wants to retrieve the list of employees having more than 4 years of experience and are experts in Social media marketing. In this case, they can use Zoho CRM's COQL API or Bulk Read API. Let's see how to achieve this.

Retrieving MxN data via COQL API

We know that both the Employees and Skills modules' association data is maintained in the linking module. In order to retrieve data from the linking module, query using the API name of the lookup fields in the linking module.

Request URL: {{api-domain}}/crm/v6/coql
Request Method: POST

Sample Input:

{
    "select_query" : "select Employees.Name as employee_name, Employees.Year_of_Experience as employee_experience, Skills.Name as skill_name from EmpXSkills where Employees.Year_of_Experience > 4 and Skills.Name like '%Social%'"
}


From the SQL perspective, above COQL can be interpreted as
select emp.Name as employee_name, emp.Year_of_Experience as employee_experience, skill.Name as skill_name from EmpXSkills left join Employees as emp on EmpXSkills.Employees = emp.id left join Skills as ski on EmpXSkills.Skills = ski.id where emp.Year_of_Experience > 4 and ski.Name like '%Social%'

Sample Response


Retrieving MxN data via Bulk Read API

Bulk Read API allows you to fetch a large set of data i.e., you can fetch a maximum of 200,000 records in a single API call. 
To export linking module records, use its API name.

Request Method: POST
Sample input to export linking module's records:
{
    "callback": {
        "method": "post"
    },
    "query": {
        "module": {
            "api_name": "EmpXSkills" //API name of the linking module
        },
        "file_type": "csv"
    }
}

Export linking module records that meet the specified criteria
To export linking module's records based on the given criteria above (similar to the COQL API).
{
    "callback": {
        "method": "post"
    },
    "query": {
        "module": {
            "api_name": "EmpXSkills"
        },
        "fields": [
            "Employees.Name",
            "Employees.Year_of_Experience",
            "Skills.Name"
        ],
        "criteria": {
            "group": [
                {
                    "field": {
                        "api_name": "Employees.Year_of_Experience" 
                    },
                    "comparator": "greater_than",
                    "value": "4"
                },
                {
                    "field": {
                        "api_name": "Skills.Name"
                    },
                    "comparator": "contains",
                    "value": "Social"
                }
            ],
            "group_operator": "AND"
        }
    }
}


As the API is an asynchronous API, the response will not be available instantly; the bulk read job is scheduled, and the status can be checked. Once the job is completed, you will be notified in the callback URL. The records are available in a downloadable CSV file or ICS file (for events). See the Bulk Read API document to know how to view the status of the scheduled job and download the file, along with more sample requests and responses.

We trust that this post meets your needs and is helpful. Let us know your thoughts in the comment section or reach out to us at support@zohocrm.com
Stay tuned for more insights in our upcoming Kaizen posts!

------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------
Cheers!



    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

                                                                                                          • Biometric Access Support on Zoho Vault Desktop App

                                                                                                            Is there any plans to add biometric authentication (fingerprint, face recognition) for Vault desktop apps (Windows/macOS) to enhance security and ease of access. I would love to hear other members view on this
                                                                                                          • Zoho Sheet for Desktop

                                                                                                            Does Zoho plans to develop a Desktop version of Sheet that installs on the computer like was done with Writer?
                                                                                                          • Zoho Sheet - Desktop App or Offline

                                                                                                            Since Zoho Docs is now available as a desktop app and offline, when is a realistic ETA for Sheet to have the same functionality?I am surprised this was not laucned at the same time as Docs.
                                                                                                          • Collective-booking event not added to all staff calendars

                                                                                                            We assign two staff to certain events. When the client books this event, it adds it to one staff calendar (the 'organiser') but not the other. How can I ensure all staff assigned to a collective booking get the event in their calendar? (A side note: it
                                                                                                          • Project Management Bulletin: October, 2025

                                                                                                            Every need leads to innovation. Project Management tools were developed out of sheer necessity to drive large projects. With wide usage, the specifications grew precise, and so did the refinement. Over years we’ve crafted one of the best project management
                                                                                                          • Zoho Sheets saying locked when not locked

                                                                                                            Zoho Sheets won't let me add more rows to sheet because it's saying the sheet is locked, but the sheet is not locked. I tried using a different browser but I still have the same issue.
                                                                                                          • Identifying and Merging Accounts with Similar (Non-Exact) Names

                                                                                                            Hello everyone, I’m aware of the built-in deduplication feature in Zoho CRM that allows merging records with exactly matching values for selected fields. However, I’m running into a situation where our migrated data contains multiple variations of the
                                                                                                          • Option for super admin to recover the deleted chats in Zoho Cliq

                                                                                                            Currently, in Zoho Cliq, if a user accidentally deletes their chats, there is no option for the Super Admin to recover or view those deleted messages. I believe it would be helpful if Super Admins had a recovery option, perhaps within a certain time frame,
                                                                                                          • Zoho CRM iOS app updates: the Homepage, Zoho Survey integration, and support for multiple file uploads in subform

                                                                                                            Hello everyone! The Zoho CRM mobile app continues to evolve to bring you a smoother and more powerful CRM-on-the-go experience. We're excited to share some important updates now available in the iOS app. Here's what's new: Homepage support Zoho Survey
                                                                                                          • I am trying to integrate my module in sandbox environment to add data via API

                                                                                                            I went through the documents and tried to setup the API for adding the module via the api but the problem is the token setup is done on "https://accounts.zoho.in/oauth/v2/token" domain and the bulk write is done on "https://content.zohoapis.com/crm/v8/upload"
                                                                                                          • Setting up primary mobile number.

                                                                                                            Hi Sir Earlier I joined IIFL team and got an organizational email of zoho services. Later i quit and now my account is deactivated with IIFL but i am unable to link my mobile number to my own email id with zoho.
                                                                                                          • Zoho sheet for desktop

                                                                                                            Hi is zoho sheets available for desktop version for windows
                                                                                                          • Tables for Europe Datacenter customers?

                                                                                                            It's been over a year now for the launch of Zoho Tables - and still not available für EU DC customers. When will it be available?
                                                                                                          • Guided Conversations - Ticket Creation

                                                                                                            Hi there, Using Guided Conversations to Take Customer Data and apply it into a Support Ticket for internal use, Is there a way to take multiple Textual Variables Inputs (A series of questions), and have the answers all appear in the Description of the
                                                                                                          • How to send certain invoices for Approval based on condition?

                                                                                                            To streamline operations, I need the invoices to go for approval when certain conditions are met. For example, if my staff gives a discount of x amount, it must go for approval. If there is no discount, then the invoice will be approved automatically.
                                                                                                          • Unable to continue payment

                                                                                                            Hi, I want to make a payment for my email subscription, but I cannot proceed with the payment because my NITKU is invalid. In Indonesia, the NITKU consists of 22 digits, but Zoho only provides 20 digits, causing my NITKU to be invalid. Please help me
                                                                                                          • Is there a way to show contact emails in the Account?

                                                                                                            I know I can see the emails I have sent and received on a Contact detail view, but I want to be able to see all the emails that have been sent and received between all an Accounts Contacts on the Account Detail view. That way when I see the Account detail
                                                                                                          • Massive spam pretending to come from our address – is this a Zoho security issue?

                                                                                                            Hi, We’ve been receiving more and more suspicious emails lately — many of them clearly look like scams. But yesterday, we got an email that appeared to be sent from our own address, which was very concerning. We're starting to wonder if this might be
                                                                                                          • Cant recieve mails

                                                                                                            I’m having an issue with my external IMAP account not fetching any emails into Zoho Mail, even though the connection test says “Success”. I can send, if someone sends an email to me. my original directory (home.pl host) recieves it in their portal but
                                                                                                          • Zoho Sheet Autofit Data

                                                                                                            While using Autofit Data function in Zoho Sheets with Devnagri Maratji or Hindi Fonts, a word or a number, it keeps couple of characters outside the right side border.
                                                                                                          • Enhancements to finance suite integrations

                                                                                                            Update on the migration (October 28, 2025): Starting this week (October 29 tentatively), we’ll begin migrating Zoho CRM users to Zoho Books as integration users. This means actions will now run under each user’s own Zoho Books access, instead of the admin’s.
                                                                                                          • Edit 'my' Notes only

                                                                                                            The permissions around Notes should be more granular, and allow to user to be able to edit the notes he created only. The edit Notes permission is useful as it allows the user to correct any mistakes or add information as needed. However, with this same
                                                                                                          • How do I filter contacts by account parameters?

                                                                                                            Need to filter a contact view according to account parameter, eg account type. Without this filter users are overwhelmed with irrelevant contacts. Workaround is to create a custom 'Contact Type' field but this unbearable duplicity as the information already
                                                                                                          • Job Alerts for Candidates

                                                                                                            hi All, I have 2 questions relating to sharing job details with candidates. 1. is there a way to notify candidates that meet certain criteria of current jobs available? eg. I run a candidate search, and identify 50 candidates that might be suitable. Can
                                                                                                          • Add multiple users to a task

                                                                                                            When I´m assigning a task it is almost always related to more than one person. Practical situation: When a client request some improvement the related department opens the task with the situation and people related to it as the client itself, the salesman
                                                                                                          • Enhancing Task Accuracy: Automatically notify the owners upon Task duplication.

                                                                                                            Hello Everyone, A Custom function is a user-written set of code to achieve a specific requirement. Set the required conditions needed as when to trigger using the Workflow rules (be it Tasks / Project) and associate the custom function to it. The requirement
                                                                                                          • Show/ hide specific field based on user

                                                                                                            Can someone please help me with a client script to achieve the following? I've already tried a couple of different scripts I've found on here (updating to match my details etc...) but none of them seem to work. No errors flagged in the codes, it just
                                                                                                          • Where are Kanban swimlanes

                                                                                                            So i've been playing with Zoho Projects Kanban view a bit more. It appears that task lists are being used as the Kanban columns, which makes sense from the implementation point of view but not the logical one.  Kanban columns are statuses that a task can flow through, while a task list has been a logical way to organize related tasks and relate them to a mislestone. In other words a task in a particular task can go through several stages while remaining in the same task list. After doing some research
                                                                                                          • Tip 19: How to display images in Pages using ZML snippets

                                                                                                            Hi folks, We're back with another tip on how to use Zoho Markup Language (ZML) to create interactive pages in Zoho Creator. You can use ZML snippets to add various kinds of components to your pages and structure them in meaningful ways. That's not all, though—using ZML you can ensure your application is automatically compatible with all kinds of devices without any inconsistencies. We often get questions from users about how to invoke Deluge scripts within ZML code. Here's a simple use case for adding
                                                                                                          • Can zoho swign format block text spacing automatically when prefilled from zoho crm?

                                                                                                            I'm sending zoho sign template from zoho crm, so that zoho crm pre-populates most fields. I have existing pdf documents that i am having signed. I have no ability to change the pdf documents, they are standardized government forms. The problem I am facing
                                                                                                          • Zoho Inventory / Finance Suite - Add feature to prevent duplicate values in Item Unit field

                                                                                                            I've noticed that a client has 2 values the same in the Unit field on edit/create Items. This surprised me as why would you have 2 units with the same name. Please consider adding a feature which prevents this as it seems to serve no purpose.
                                                                                                          • Reference lookup field values in Client script

                                                                                                            hello all, I'm using a "ZDK.Apps.CRM.Products.searchByCriteria" function call, which is returning the matching records correctly; however, one of the fields is a lookup field which I need the associated data. I believe there is a way to get this data
                                                                                                          • In App Auto Refresh/Update Features

                                                                                                            Hi,    I am trying to use Zoho Creator for Restaurant management. While using the android apps, I reliased the apps would not auto refresh if there is new entries i.e new kitchen order ticket (KOT) from other users.   The apps does received notification but would not auto refresh, users required to refresh the apps manually in order to see the new KOT in the apps.    I am wondering why this features is not implemented? Or is this feature being considered to be implemented in the future? With the
                                                                                                          • Every time an event is updated, all participants receive an update email. How can I deactivate this?

                                                                                                            Every time an event is updated in Zoho CRM (e.g. change description, link to Lead) every participant of this meeting gets an update email. Another customer noticed this problem years ago in the Japanese community: https://help.zoho.com/portal/ja/community/topic/any-time-an-event-is-updated-on-zohocrm-calendar-it-sends-multiple-invites-to-the-participants-how-do-i-stop-that-from-happening
                                                                                                          • How can I filter a field integration?

                                                                                                            Hi,  I have a field integration from CRM "Products" in a form, and I have three product Categories in CRM. I only need to see Products of a category. Thanks for you answers.
                                                                                                          • How to implement new online payment gateway?

                                                                                                            Hello, Can you tell me how to proceed to implement my local payment gateway? DIBS has an open avaiable API that should be easy to implement into ZOHO BOOKS. http://tech.dibspayment.com/dibs_payment_window
                                                                                                          • Zoho CRM - Portal Users Edit Their Own Account Information

                                                                                                            Hi Community, I'm working on a client portal and it seems like the only I can make the Account record editable to the Contact, is if I add another lookup on the Account to the Contact record. Am I missing something as the account already has a list of
                                                                                                          • I’ve noticed that Zoho Sheet currently doesn’t have a feature similar to the QUERY formula in Google Sheets or Power Query in Microsoft Excel.

                                                                                                            These tools are extremely helpful for: Filtering and extracting data using simple SQL-like queries Combining or transforming data from multiple sheets or tables Creating dynamic reports without using complex formulas Having a Query-like function in Zoho
                                                                                                          • Connecting Zoho Mail with Apollo.io

                                                                                                            Hi, I am trying to connect my Zoho Mail account with my Apollo.io account to start sending cold email for prospecting purposes. I have activated the IMAP setting but I am still unable to connect to the Apollo account. I am using my email credentials but
                                                                                                          • Where does this report come from in the Zoho One ecosystems?

                                                                                                            Is this directly from MA, Analytics or ??? ???
                                                                                                          • Next Page