Skip to main content

Linker modules in Zoho CRM for many to many relationships

In Zoho CRM, it's relatively easy to set up a one to one or one to many relationship using lookup fields. E.g. Let's say you're configuring the CRM for a real estate firm and there's a one to one mapping between owners of a house (which we'll use the Contacts module for) and the property itself (which we'll set up in a custom module). Just add a lookup in the property module for Owner and hey presto, you have a one (owner) to many (properties) relationship.

But what about if it's many to many. For example, if instead of the people being the ones selling the house, we actually want to track interested buyers. We have a few options:
1. We could rename Products to Properties and use the inbuilt many to many feature in Leads which allows you to add unlimited products to a Lead. However, if you're not using the Products module, then this won't work. There's no way to set up the same functionality for custom modules or any module apart from Products.

2. We could add 50 separate fields to the property: "Buyer 1", "Buyer 2" but this is incredibly ugly and non-scalable.

3. Preferred option: use a linker module, e.g. "Expression of interest"

In our example, "Expression of interest" would have a lookup for "Potential Buyer" and "Property". As such, it would have a one (buyer/property) to many (expression of interest) relationship with the underlying modules and facilitate a many to many relationship between buyers and properties. Now you can have unlimited expressions of interest for a single property - many buyers can be interested in it and each buyer can be interested in multiple properties.

This is a flexible approach and one I've used in several client projects.


  1. Hi Jeremy,

    I'm new to Zoho and trying to get my head around implementing many-to-many relationships. Your 'option 3' sounds very promising but there's not enough detail here for me to understand what you mean. Is there any chance you could expand, perhaps a step-by-step how-to?


    1. Hi Martin, my video: has more details.


Post a Comment

Popular posts from this blog

searchRecords with multiple criteria in Zoho CRM API

NB: this blog post is no longer relevant as API v2 lets you use searchRecords with multiple criteria :) I discovered something really cool tucked away in the Zoho CRM forums today. For the history, check out this thread . In summary, the searchRecords API task in Zoho CRM is impossible to use if you have multiple criteria and in general it's pretty annoying to get the single criterion right. In the forum thread, Zoho Support advised that you can actually use getRecords with a view name. This feature is not documented on the getRecords page at all but I can confirm it works:D This is really, really cool. It's going to make my life as a Zoho dev much easier! Instead of having to do something really inefficient and ugly like: leadRecords = zoho.crm.searchRecords("Leads","(Created Time|<|" + yesterday_date +")",fromIndex,toIndex); for each ele in leadRecords { lead_source = ele.get("Lead Source"); createTime=(ele.g

Round robin lead assignment for API generated leads in Zoho CRM

Do you add leads to your CRM via the Zoho CRM API? If so, you'll note that lead assignment rules don't work. I have developed a CRM extension called Advanced Round Robin that you can buy on the Zoho Marketplace. If you'd prefer to do it yourself, the below code can allow you to add round robin lead assignment functionality (though it's missing many of the more powerful features of the Advanced Round Robin extension). You'll need to set a few config variables like your authtoken and the user role you want leads to be assigned to. You'll also need to create a reference lead that's assigned to one of the users who should receive leads. The script will use this to figure out who should get the next lead. Thanks to Prakash from Zoho for giving me the base code for this script. Want more options? I have a paid version of this script that you can buy on the Zoho Marketplace.

Getting current time in a specified timezone using Deluge script

Recently I was working on a custom function for Zoho CRM which required me to get the current time in a specified timezone. I assumed that zoho.currenttime would give me the time based on the timezone chosen in the organisation settings but discovered that it always gives it to you in PST. The Zoho Partner team gave me this snippet to solve the problem: current_time_in_timezone = zoho.currenttime.toString("yyyy-MM-dd'T'HH:mm:ss", "Australia/Sydney").toTime("yyyy-MM-dd'T'HH:mm:ss"); If you need the current date, do: current_date_in_timezone = zoho.currenttime.toString("yyyy-MM-dd'T'HH:mm:ss", timezone).toDate(); To figure out what you can put in for the timezone part, refer to