Rodger's helpful scripting tips #2 - Subforms

Rodger's helpful scripting tips #2 - Subforms

Subforms are very useful but also poorly managed. So here are some helpful tips for when you're managing subform data.

1. Subforms are actually a hidden module within Zoho and you can get data out of subforms for all records. If you've ever tried to create a subform in a module and been met with a duplicate name error, that's why. When you create a subform, you're actually creating a hidden module, and module names have to be unique. Sadly, this module is not searchable, but you can iterate, or loop through your records. i.e Let's say you have a subform called "Ordered Products". You can use:

  1. l_orderedProducts = zoho.crm.getRecords("Ordered_Products",<page>,200);

And this will give you a list of all (or the first 200) records within that subform. You can then loop through the records by indexing the <page> up by 1 each time. This works for relatively small numbers of records, but not great for tens of thousands of records.

Within the subform record is the record it belongs to, listed as "Parent_Id". Now you can bulk update data within subforms across multiple records. So, let's say you wanted to update the Description of the line item of a particular product within a subform. You could use a bit of code like this:

  1. for each record in l_orderedProducts
  2. {
  3.    if record.get("Product").equals(<productId>)
  4.    {
  5.       m_record = Map();
  6.       m_record.put("Description",,New Description>);
  7.       updateRecord = zoho.crm.updateRecord("Ordered_Products",record.get("id"),m_record);
  8.    }
  9. }
This is just an example code but in this hypothetical situation, you would have just updated the Description on all lines in all subforms in all records for 1 specific product. Sure beats editing each individual record! Remember to use a bulk update if you've got many records to update.

2. Updating a subform entry is easy in deluge, but some people tent to re-write subform data rather than simply updating data. One way of updating a subform is as follows:

Step 1 - Get the subform entries
Step 2 - Create a Map and copy all the subform data into a new map
Step 3 - Add the map to a list
Step 4 - Add the new list to the record map

It's actually way simpler than that. Firstly, you have to understand that when you do a For Each on a list, the "each" is actually a map. This is something that is overlooked by some people. I.E

  1. l_orderedProducts = zoho.crm.getRecords("Ordered_Products",<page>,200);
  2. for each record in l_orderedProducts
  3. {
  4. }

each "record" is a map and since it's a map, we can write data to it directly. So what we can do it

  1. r_record = zoho.crm.getRecordbyId("Orders",v_id);
  2. for each line in r_record.get("Ordered_Products")
  3. {
  4.    line.put("Description",<New Description>);
  5. }
  6. m_record = Map();
  7. m_record.put("Ordered_Products",r_record.get("Ordered_Products"));

So what's happened here? Well, we've updated the Description on each line item with a new value. This is now stored within the map "line", which is within the list "Ordered_Products", which is within the record (map) "r_record". We can now read the updated list out of r_record.

We don't need to create a new list.
We don't need to create new maps
We don't need to re-create the entire subform of data just to update a few values. You only need to do this if you have a need to preserve the old data and new data within your function which is rarely the case for simple record updates.

3. Re-order a subform without destroying data.

The accepted wisdom when re-ordering a subform is to re-order your data, re-create the subform list, and then re-write that list to the record. This not only adds extra lines of code, but destroys data. It's rare, but if you're using the subform record ID in another place, you can't simply go and re-write your data because the original record will be deleted. So what do we do?

Well, to re-order a subform, you simply need to give it a new S.No order. That's it! You need to have the S.No visible on the record layout for this technique to work, but it will simply re-order you subform lines without re-writing or deleting any data (apart from the S.No that is)

  1. r_draftOrer = zoho.crm.getRecordById("Draft_Orders",v_id);
  2. l_lines = List();
  3. for each  line in r_draftOrer.get("Custom_Products")
  4. {
  5. l_lines.add(line.get("Proof").get("name"));
  6. }
  7. l_lines = l_lines.sort();
  8. for each  item in r_draftOrer.get("Custom_Products")
  9. {
  10. item.put("LinkingModule18_Serial_Number",l_lines.indexOf(item.get("Proof").get("name")) + 1);
  11. info item.get("LinkingModule18_Serial_Number");
  12. }
  13. update = zoho.crm.updateRecord("Draft_Orders",v_id,{"Custom_Products":r_draftOrer.get("Custom_Products")});
  14. return "";

So what's going on here?

1. First we get the record with the subform and we create a blank list
2. Into this blank list we're going to add the sorting key you want to use. In this case, we're wanting to sort by the record name
3. Then we sort the list either ascending or descending
4. The last for each re-orders the S.No. For each line in the subform we get the index of the name in l_lines. What we're doing is asking the code "I have this data, what position is it in "that" list?", and it returns the position, or index. Since all indexes start from 0, but the S.No starts from 1, we need to add 1 to the value returned.
5. We're going to put that new S.No directly into the subform record, just like we did further up the page
6. Finally, we update the record with the updated subform. All that has changed in the subform is the S.No has been updated with a new order.

Now when you re-load your record, Zoho will sort the subform in ascending order based on S.No.


Hope this helps people with writing nice tight efficient code. My next post will be how to turn any Workdrive folder into a drop folder and have new files automatically added to CRM records.

    Access your files securely from anywhere


            Zoho Developer Community




                                      Zoho Desk Resources

                                      • Desk Community Learning Series


                                      • Digest


                                      • Functions


                                      • Meetups


                                      • Kbase


                                      • Resources


                                      • Glossary


                                      • Desk Marketplace


                                      • MVP Corner


                                      • Word of the Day



                                          Zoho Marketing Automation


                                                  Manage your brands on social media



                                                        Zoho TeamInbox Resources

                                                          Zoho DataPrep 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 Writer

                                                                                    Get Started. Write Away!

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

                                                                                      Zoho CRM コンテンツ






                                                                                        Nederlandse Hulpbronnen


                                                                                            ご検討中の方





                                                                                                  • Recent Topics

                                                                                                  • Can Wisestamp email signature be use with Zoho mail?

                                                                                                    Does a Wisestamp email signature work with Zoho mail?
                                                                                                  • WiseStamp

                                                                                                    WiseStamp is an excellent social media signature tool. It integrated seamlessly into Gmail and Thunderbird, plus a few more. Are there any plans to get this incredible app integrated into Zoho. check it out here: http://www.wisestamp.com/ thanks Tim
                                                                                                  • Power BI connector (Zoho Creator) to Zoho Projects

                                                                                                    How can i connect power bi to Zoho Projects? domain is zoho.com How can i find workspace name, application link name and Report link name?
                                                                                                  • Update your Google connection with Zoho TeamInbox

                                                                                                    Dear all, Wishing you a Happy New Year! Google has recently updated its security policy to enhance user protection, requiring all third-party apps and services to use OAuth authentication and password-less login methods. This update impacts users who
                                                                                                  • Easy way to delete attachments

                                                                                                    I've reached my data limit and would like to run a view/report, and mass delete attachments. Is there an easy, fast way to do this? Moderation Update: Post Summary: There are two features the post discusses a) Easy way to remove Email attachments Will
                                                                                                  • Sites Speed and Performance Grades

                                                                                                    I noticed that there are no recent inquiries or complaints about load speed or performance issues with Zoho Sites websites. However, I wanted to understand what Zoho has done to ensure that speed remains optimized, images are compressed and lazy loaded,
                                                                                                  • Integrating Quotes with leads Information

                                                                                                    Our business requires giving a quote to a lead (not Account / Potential - as we define it differently). Currently, Zoho CRM's Quotes are integrated with Accounts / Potentials and not with Leads. Is there a way I could get the Lead information to the Quotes
                                                                                                  • Unknown error occurred

                                                                                                    Hi, When we want to publish or edit a page in our website, we encounter with "Unknown error occurred" problem. I share a screenshot here. Our website is www.essoft.com. It happens every page. We want to solve this ASAP.
                                                                                                  • Zoho one

                                                                                                    I am starting Zoho one as a beginner and there is Zoho crm and Zoho sales which i needed to work on but it appears in unassigned apps. What Should i do now?
                                                                                                  • Dialing Microsoft Teams Phone Service via Zoho CRM

                                                                                                    I am using the VOIP option in Microsoft teams for my office phone system. I was hoping to have a way to dial numbers directly from Zoho CRM, but don't see anything in the Teams Integration or in the Telephony integration that will enable this. Does anyone
                                                                                                  • Emailing lookup field but placing this as an ID or number rather than text

                                                                                                    Hi there, First time poster and have been a user of Zoho Creator for approx 6weeks so forgive my ignorance as I learn to code. We have a need to send an email to a specific email address with some of the fields triggered by the submission of a form. In
                                                                                                  • Search mails in shared mailbox

                                                                                                    Hi everyone, is there a way to search mails in shared mailbox's? Search in streams or mail doesn't return anything from mails in shared mailboxes. Thanks! Rafal
                                                                                                  • User Emails Blocked

                                                                                                    Community: I keep running into issues where our users stop receiving notifications from CRM because their email addresses get blocked in on the backend some how. I reach out to support, they confirm, they fix, and we carry on, but then it happens again.
                                                                                                  • Why wont Zoho Support Grammarly!! --- PLEASE VOTE FOR THIS to show Zoho we need this

                                                                                                    The spell check and grammar in ZOHO are so buggy and a waste of time. Please support Grammarly! I'm sure I'm not the only one — there are other CRMs that support this. If you're not planning to add this feature, Please let others know before accepting
                                                                                                  • Is it possible to hide Developer Space for all user in Zoho Projects

                                                                                                    Hello! I am Zoho admin in a company and we want to use Zoho Project to manage projects, but after a few days of testing we are not able to "hide" the Developer Space from all kind of users except the admin. To sum up, I want to hide this for all users.
                                                                                                  • API (v2) Search Criteria using CONCAT

                                                                                                    With API I can search for a contact using First_Name and Last_Name. However, when I need to search the Contact Module using a full name — and because CRM does not provide an API for full name — I am not finding a way to do this in the traditional way
                                                                                                  • Weekly Tips: Stay Focused with Email Snooze!

                                                                                                    New Year, New Resolutions Being back at work also means being back to the constant barrage of messages from work and clients. The constant flood of incoming emails can lead to the missing of important messages, especially when you can't respond right
                                                                                                  • Schedule Zoho CRM reports only on Business Days

                                                                                                    Hello, Is it possible to schedule reports only on business days ? We currently get daily sales reports on weekend which has no value since the sales team doesn't work on weekends. Thanks
                                                                                                  • Zoho Payroll's Year in Review 2024

                                                                                                    As we roll into 2025, we'd like to pay tribute to all the milestones we hit in 2024! From releasing out new features that streamlined your workflows to updates that made payroll management smoother, we’ve had a prolific year—all while keeping you, our
                                                                                                  • Recurring Events Not Appearing in "My Events" and therefore not syncing with Google Apps

                                                                                                    We use the Google Sync functionality for our events, and it appears to have been working fine except: I've created a set of recurring events that I noticed were missing from my Google Apps calendar. Upon further research, it appears this is occurring
                                                                                                  • Multiplying Weight of product by Quantity

                                                                                                    I am facing an issue with creating a report that consolidates the total sales volume in kilograms. I have already specified the weight for each product. I have also aggregated the total sales quantity. The key question is: how can I create a report that
                                                                                                  • Confirmation prompt before a custom button action is triggered

                                                                                                    Have you ever created a custom button and just hoped that you/your users are prompted first to confirm the action? Well, Zoho knows this concept. For example, in blueprint, whenever we want to advance to the next state by clicking the transition, it is
                                                                                                  • Frontal interview scheduling - room availability in office using Google Workspace?

                                                                                                    Hi, We're using Zoho Recruit as our ATS and Google Workspace as our email, calendar and resources management. We want to use the interview feature to schedule an in-person (frontal) interview with the applicants. How can we sync the room resources availability
                                                                                                  • Add and Remove Agents from Departments and Groups in Zoho One

                                                                                                    Hi Zoho Flow Team, We hope you're doing well. Currently, Zoho Flow provides an action to add an agent to a group in zoho one, but there is no action to remove an agent from a group or a department. Another action that we find missing is the option to
                                                                                                  • Explication sur comment mettre en place des règles d'affichage ou "layout Rules"

                                                                                                    J'ai passé plus d'une heure hier avec le support et je n'ai rien compris !! Je suis lecteur assidu des guides (je "RTFM") qui ne sont absolument pas orienté "client" chez Zoho, et je tiens à le rappeler ici . Dans la documentation on m'indique un cas
                                                                                                  • Introducing Hiring Pipeline for Vendor Portal

                                                                                                    Keeping vendors informed about candidate progress is often challenging, leading to communication gaps and repeated follow-ups. To address this issue, we've released an update to the Vendor Portal feature that lets you choose to display candidates' hiring
                                                                                                  • Address Grabber function for Zoho

                                                                                                    I converted from ACT to Zoho. With ACT, I used an add-on called AddressGrabber to scrape the contact information from leads that I buy and contact information contained on emails and websites and directly add it as a new lead or contact. Does anyone know
                                                                                                  • Integrate zoom with zoho bookings please; or add optional times in zoho meetings

                                                                                                    Just like events - these online meetings like zoom need to be integrated with zoho bookings, and there needs to be option for customer to book a time slot. It should not be dictated by CRM user.
                                                                                                  • Add Owner to deluge-created module record note

                                                                                                    Is it possible to include the "owner" aka "creator", of a Note when creating it via delulge? This sets "superadmin" as the Note creator. I need to override it. notemap = Map(); notemap.put("Parent_Id",program_contact_id); notemap.put("Note_Content",program_contact_data.get('Note'));
                                                                                                  • Unique and Random IDs in Zoho Forms: Organize and Secure Your Data Efficiently

                                                                                                    When it comes to form submissions, organizing and identifying entries effectively is crucial. Zoho Forms offers two versatile ID generation options for submissions: Unique ID and Random ID. Each serves distinct purposes, providing flexibility to meet
                                                                                                  • Sort By Date - Deluge

                                                                                                    I have the following code, which normally works to sort calls by created time. Every once in a while, it doesn't work and something sneaks through in the wrong order and I can't figure out why. calls = zoho.crm.searchRecords("Calls","(Owner:equals:" +
                                                                                                  • Need to change author's name in blog post

                                                                                                    My colleague wrote a blog post for our blog but when I put it on our site, the author's name automatically populated as mine. I contacted ZohoSupport and was told to change the Nickname in my profile. Well, I did and then ALL the blog posts were listed as being written by my colleague! Is there any way to simply change one blog post with the correct author's name?
                                                                                                  • Iteration through a list - Coming up against a "Failure to update function" error

                                                                                                    Hi there! I've been attempting to get a deluge script working and am running into an error that I have been unable to resolve. The error I am getting is Failed to update function Error at line :18. Improper Statement. Error might be due to missing ';'
                                                                                                  • Can you modify "Last Activity Time" in deluge? If so what's the field name?

                                                                                                    I need to perform some bulk modifications on records in the Leads module, but I need to avoid changing the "last activity time" or "date modified" because I am using those fields to filter and sort leads for follow-up action. I cannot find an answer anywhere
                                                                                                  • How do I define a weekend

                                                                                                    I noticed the default for weekends does not seem to include Saturdays. How can i define weekends to include both Saturdays and Sundays? Thank you.
                                                                                                  • 【Zoho CRM】ポータル機能のアップデート

                                                                                                    ユーザーの皆さま、こんにちは。コミュニティチームの藤澤です。 今回は「Zoho CRM アップデート情報」の中からポータル機能のアップデートをご紹介します。 今回の機能アップデートにより、CRMのポータルへのログインがより簡単にできるようになりました。 【目次】 SAMLベースのシングルサインオンについて ポータルへのアクセスリンク送付について 今回のアップデートにより、アイデンティティプロバイダー(IdP)を利用している組織において、SAMLベースのSSO(シングルサインオン)を有効化できるようになりました!
                                                                                                  • Getting error during inserting a record in form of zoho people using zoho api

                                                                                                    import requests import json # Set your access token and Zoho People API base URL access_token = '1000.XXXXXXXXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX' api_base_url = 'https://people.zoho.in/people/api/' # Set the form name and data to be inserted form_link_name
                                                                                                  • UI Arabic

                                                                                                    can i change the member portal UI to arabic in zoho community?
                                                                                                  • Resume template to include profile photo

                                                                                                    Hi, We would love the Resume Template to be able to include their profile photo. How can this be done? Miriam
                                                                                                  • Marking a form as 'done'?

                                                                                                    Hi! I've got a form that staff fill in when moving stock from location to location. I see the entries they've sent across and I input them into my stock control system. Is there a way to mark a form as 'done'? So that I know which entries I've input,
                                                                                                  • Next Page