This is a very quick article with examples of managing a multi-user or multi-lookup field in CRM using Zoho Deluge.
Why?
Sometimes you might need this when data mapping fields from one module to another, sometimes you need to manage existing multi-lookups/users in a record.
How?
So the key point to remember is that all multi-select lookup and multi-user lookup fields are held in temporary CRM modules called a "LinkingModule" (as opposed to standard modules and custom modules).
Quick way to determine the API name of the linking module:
- Go to setup > Developer Space > functions.
- Create a standalone function called "Test".
- Type in line 1: r_Record = zoho.crm.getRecords
- then press Enter (DO NOT START TYPING FOR A MODULE NAME - LET THE SYSTEM POPUP YOUR OPTIONS AS PER THE FOLLOWING SCREENSHOT - USE ARROW KEYS OR MOUSE):
Find records relevant to this module:
l_LinkedRecords = zoho.crm.searchRecords("Opportunities_X_Products","(Opportunity:equals:" + v_DealID + ")");
- l_LinkedRecords = zoho.crm.searchRecords("Opportunities_X_Products","(Opportunity:equals:" + v_DealID + ")");
Find records relevant to this user:
v_SearchCriteria = "(field0:equals:" + v_UserID + ")"; l_SearchResults = zoho.crm.searchRecords("Vendors_X_Users",v_SearchCriteria);
- v_SearchCriteria = "(field0:equals:" + v_UserID + ")";
- l_SearchResults = zoho.crm.searchRecords("Vendors_X_Users",v_SearchCriteria);
Code to Add a value to a multi-lookup (on Create Record):
// sample code when creating a record in a module that contains a lookup m_Create = Map(); m_Create.put("Name","Joels Amazing Test"); r_Create = zoho.crm.createRecord("Tests", m_Create); // now take the ID that was created and use the following code to populate the multi-lookup field if(!isnull(r_Create.get("id"))) { m_Link = Map(); // using record IDs cos there's nothing better m_Link.put("Test",r_Create.get("id")); // using record IDs cos there's nothing better m_Link.put("Joel",123456789012345678); // create link r_Link = zoho.crm.createRecord("Tests_X_Contacts", m_Link); }
- // sample code when creating a record in a module that contains a lookup
- m_Create = Map();
- m_Create.put("Name","Joels Amazing Test");
- r_Create = zoho.crm.createRecord("Tests", m_Create);
- // now take the ID that was created and use the following code to populate the multi-lookup field
- if(!isnull(r_Create.get("id")))
- {
- m_Link = Map();
- // using record IDs cos there's nothing better
- m_Link.put("Test",r_Create.get("id"));
- // using record IDs cos there's nothing better
- m_Link.put("Joel",123456789012345678);
- // create link
- r_Link = zoho.crm.createRecord("Tests_X_Contacts", m_Link);
- }
Code to Add a value to a multi-lookup (on Update Record):
v_DealID = ifnull(input.p_DealID,0); if(v_DealID != 0) { m_Link = Map(); m_Link.put("Deal", v_DealID); m_Link.put("Product", 123456789012345678); r_Link = zoho.crm.createRecord("Deals_X_Products", m_Link); }
- v_DealID = ifnull(input.p_DealID,0);
- if(v_DealID != 0)
- {
- m_Link = Map();
- m_Link.put("Deal", v_DealID);
- m_Link.put("Product", 123456789012345678);
- r_Link = zoho.crm.createRecord("Deals_X_Products", m_Link);
- }
Code to Delete a value from a multi-lookup:
v_ID2Delete = 123456789012345678; v_SearchCriteria = "(field0:equals:" + v_myRecordID + ")"; l_SearchResults = zoho.crm.searchRecords("Tests_X_Users",v_SearchCriteria); for each r_Link in l_SearchResults { if(!isnull(r_Link.get("id")) && r_Link.get("Test").get("id")==v_ID2Delete) { m_Delete = Map(); m_Delete.put("module","Tests_X_Users"); m_Delete.put("id",r_Link.get("id")); r_Delete = zoho.crm.invokeConnector("crm.delete", m_Delete); } }
- v_ID2Delete = 123456789012345678;
- v_SearchCriteria = "(field0:equals:" + v_myRecordID + ")";
- l_SearchResults = zoho.crm.searchRecords("Tests_X_Users",v_SearchCriteria);
- for each r_Link in l_SearchResults
- {
- if(!isnull(r_Link.get("id")) && r_Link.get("Test").get("id")==v_ID2Delete)
- {
- m_Delete = Map();
- m_Delete.put("module","Tests_X_Users");
- m_Delete.put("id",r_Link.get("id"));
- r_Delete = zoho.crm.invokeConnector("crm.delete", m_Delete);
- }
- }