Building extensions #9: Store, retrieve, and access entity-specific data in widgets using data storage

Building extensions #9: Store, retrieve, and access entity-specific data in widgets using data storage

Data storage - Overview

Storing data related to the extension you are working on is essential. It can be saved as key-value pairs for an entity or extension, known as entity and extension properties, respectively. Data can be saved for the following entities using entity properties: projects, tasks, issues, and milestones. Similarly, using extension properties, data can be recorded for an app and stored for the extension.

Support and Limitations

The entity properties allow you to store, retrieve, update, and delete data for an entity, while the extension properties allow you to do the same with an extension. Learn more about data storage functions that can be performed using entity and extension properties.

The data stored for an entity using entity property will be retained if the extension is uninstalled. However, when an extension is uninstalled, any data stored using the extension property is lost. You can refer to the limitations of entity properties and limitations of extension properties for additional details.

Scenario

A manufacturing firm uses Zoho CRM to manage its production and sales units, and also uses Zoho Projects for task management. Customers of the firm may raise cases of the"feature request" type to the solution experts for an enhancement or a request for a new feature for the existing products. The solution expert logs these requests as cases in Zoho CRM and begins working on the feature request through a task in Zoho Projects. In this way, the Zoho CRM solution expert who is the task owner in Zoho Projects can handle and manage the development-related activities to provide the feature as a solution to the customer through the Zoho Projects task.

Additionally, multiple customers may request the same feature for a product. In this scenario, it would be easier for the task owner or solution expert to keep track of all their CRM cases related to a feature request in one space, so that whenever a requested feature is completed, this can be communicated with customers of these tracked cases.

What can be done to ease the solution expert/task owner work?

The task owner would benefit from viewing a list of all their open Zoho CRM cases from inside the Zoho Projects task tab. This would allow them to view and associate the cases related to the feature request they are working on from within the task.
Once they have completed the feature enhancement and come up with a solution for the request, they can simply preview all of the Zoho CRM cases related to that feature request from within the task itself and offer an update to the customers.

Goal: Ease user experience by allowing them to view and associate Zoho CRM cases within the task details tab.

Solution

To accomplish this goal, we are going to use data storage along with a few other features in our extension.
  • First, allow the task owner to view case-specific details from the list of CRM cases. For this, we can create a task details tab widget named "CRM Cases". In this widget, we can include a drop-down menu and select a case to access case-specific details. This can be accomplished using the widgets approach explained earlier in this post.
  • Using the data storage concept, store the associated case for the task entity, allowing the task owner to view it as "Associated CRM Cases" alongside the drop-down selection the next time the widget loads. This enables the task owner to associate several cases with the task and view them all in a single widget.                                                              

Required components
  • A connection between Zoho Projects and Zoho CRM needs to be established to establish a secure integration between the products.
  • An extension configuration process includes:
  1. Creating an extension.
  2. Configuring the plugin manifest.
  3. Setting up the widget code.
  • Display all open Zoho CRM cases of the task owner as a drop-down list in a task details widget tab called "CRM Cases", and thereby allow the task owner to choose a case for which they want to view further details.
  • Implement the modal box feature to display case-specific details of the chosen case and also allow the task owner to associate the case to the task through a button in the modal box
  • Store the associated case for the task using the data storage concept (entity.store) in the modal box.
  • Display the associated cases by retrieving (entity.retrieve) it from the stored data and having them displayed as part of the widget along with the drop-down that displays the open cases.
Let's explore these components now.

Connection

We have created a connection to establish a secure integration between Zoho Projects and Zoho CRM. You can refer to this post for detailed guidance on establishing a connection.
                                                                  
                                     

Extension configuration

Extension creation: We have created a new extension for Zoho Projects. Learn more about the steps to create an extension

                                      

Plugin-manifest.json configuration: Once the extension was created, we configured the plugin-manifest.json file to include the created connection and a widget. For detailed understanding on configuring the plugin-manifest.json file, refer to our earlier post.
For our extension use case, the plugin-manifest.json file is configured as shown in the below screenshot.
                                     
                                                                  
Setting up the widget code

Now that we've set up the other components, let's move on to writing our widget code and incorporating the data storage and modal box feature.
Displaying CRM cases in "CRM Cases" task tabPlease find the index.html code snippet attached in the post.
  • In the code snippet, the current Zoho Projects user's email is retrieved using the current_user instance of zohoprojects.get JS SDK method and saved in a variable called "currentuseremail".
  • The user's CRM org ID and their CRM cases are then fetched by invoking the Get Organization Details and Get Records APIs, respectively, using the Zoho Projects request JS SDK method. Certain mandatory parameters must be passed to the SDK method to invoke the mentioned CRM APIs, such as the third-party URL, data object, and connection. If you require further details on how the Zoho Projects Request method works, you can refer to our earlier post, which explains the working and the required parameters for invoking this method in detail.
  • From the Zoho CRM get records API response, a drop-down list is generated in the widget, with the Zoho Projects task owner's open CRM cases.
  • The end-user can select a value from the drop-down list to view the case-related details. This selected value (the selected case) is then fetched. When the Get Case Details button is clicked, a modal box instance is created and opened using the modal.create and instance methods. When the modal box opens, the selected case ID value is emitted using the emit method and the keyword "stored-files".
  • Using the emitted values, the case details is populated in a modal box, and if the solution expert finds that the case is related to the feature request handled in the Projects task, the case ID is saved using the entity.store method and associated with the current task. (This is addressed in the casedetails.html code in the next section).
  • The associated value stored in the modal box using the entity.store method is then retrieved in the index.html page using the entity.retrieve method. Using the retrieved associated case ID, when the widget loads, the Zoho CRM Get Records API is invoked again. From the response, the unclosed cases and the cases which have the email ID as that of the current Zoho Projects user's email address (fetched earlier and saved in variable currentuseremail) are filtered and displayed as the "Associated CRM cases" in the widget.

Modal box to display the details of the chosen case - Please check casedetails.html code snippet attached in this post
  • In the code snippet, the value emitted from the index.html, using the emit method for the keyword "stored-files" is received by the on method in the modal box UI. Using the received value, a hit is made to the Zoho CRM Get Records APIs using the Zoho Projects Request Method again.
  • The essential details are retrieved from the case-specific details returned by the Zoho CRM Get Records API and displayed to the task owner for reference. These details allow them to check on the case and associate it with the current Zoho Projects task if it is related to the feature request.
  • If the case is associated, the associated case value ID is saved with the entity.store property.
  • This stored and associated value is then received and retrieved using the entity.retrieve in index.html, from which the Associated CRM cases value are populated in the widget as mentioned earlier. This is addressed in the index.html code in the previous section.
Now that we have completed the setup and have all the extension components ready, let's go ahead and see the output.

Sample output: 

                                     

In this example, we used the data storage for an entity feature to save task-related data and retrieve it when needed. Similarly, we can store data for an app to perform various storage functions such as save, retrieve, update, and delete. We hope you found this information useful. Keep following this space for more insights!

Sign up for a Zoho Developer account and start developing extensions for Zoho Projects using Sigma.


SEE ALSO




        • Recent Topics

        • Credit Card Readers?

          We would like to use our commerce website at conferences (and eventually in store) to swipe credit cards to pay for orders. How would we accomplish this? Does Zoho have anything available for a developer write code to integrate something like Stripe Terminal
        • AI generated meeting notes associated to Account or Deal

          As our organization works to improve efficiency we are looking for a solution to leverage AI to generate meeting notes and then add those notes to a CRM record such as an Account or Deal. I see Zoho has a Notebook AI offering that talks about the ability
        • Stock count by bin location

          Is there a configuration to make a stock count by bin or area and not by product. these is useful to manage count by area Regards
        • Add Prebuilt "Partner Finder" Template with Native Zoho CRM Integration in Zoho Sites To: Zoho Sites Product Team

          Hi Zoho Team, We hope you're doing well. We would like to request a prebuilt "Partner Finder" template for Zoho Sites, modeled after your excellent implementation here: 🔗 https://www.zoho.com/partners/find-partner-results.html ✅ Use Case: Our organization
        • How Do I Refund a Customer Directly to Their Credit Card?

          Hi, I use books to auto-charge my customers credit card. But when I create a credit note there doesn't seem to be a way to directly refund the amount back to their credit card. Is the only way to refund a credit note by doing it "offline" - or manually-
        • Can we generate APK and IOS app?

          Dears, I want to know the availability to develop the app on zoho and after that .. generate the APK or IOS app  and after that I added them to play store or IOS store.. Is it possible to do this .. I want not to use zoho app or let my customers use it. thanks 
        • Limitation with Dynamic Email Attachment Capture

          I've discovered a flaw in how Zoho Creator handles email attachments when using the Email-to-Form feature, and I'm hoping the Zoho team can address this in a future update. The Issue According to the official documentation, capturing email attachments
        • Zoho Learn Course Completion Notifications/Triggers/API

          Zoho Learn works great and will suit our course creation needs, but it appears to be lacking a bit when it comes to integration with other Zoho services (creator etc.) when it comes to course completion. 1) Is there an API or Zoho Flow trigger for when
        • Sorting a list of record acquired from the zoho.crm.searchRecords function.

          This is something for which I'm trying to figure out a straightforward way to do. The searchRecords does a great job fetching me the records that I want. However, in some cases, where it returns multiple records, I want it to sort the returned list by date of creation of that record, so that when I do records.get(0), I get the most recent record.  As an example, here's my sample pseudo code: records = zoho.crm.searchRecords("Clients", "Office_Number:equals:123456"); Now the "records" list above contains
        • Enhanced Recording Permission Controls for Zoho Cliq Meetings (Similar to Zoom)

          Hello Zoho Cliq Team, We hope you are doing well. We would like to request an enhancement to the recording permission functionality in Zoho Cliq Meetings. Current Limitation: in Zoho Cliq Only hosts and co-hosts can record a meeting. Participants cannot
        • Phone Connection

          When on a call the person on the other end complains that there is static, I am cutting in and out or they can't hear me all. This happens on the cell connection as well.
        • Can't add a sender adress from zoho campaigns

          hi, I need to change the sender address for a campaign.  When i try to add it i get a message to say 'duplicated email address found while adding your sender address'.  This is the first campaign i'm sending so I don't understand why this message is displayed? Thanks Jane 
        • Admin asked me for Backend Details when I wanted to verify my ZeptoMail Account

          Please provide the backend details where you will be adding the SMTP/API information of ZeptoMail Who knows what this means?
        • This domain is not allowed to add. Please contact support-as@zohocorp.com for further details

          I am trying to setup the free version of Zoho Mail. When I tried to add my domain, theselfreunion.com I got the error message that is the subject of this Topic. I've read your other community forum topics, and this is NOT a free domain. So what is the
        • This user is not allowed to add in Zoho. Please contact support-as@zohocorp.com for further details

          Hello, Just signed up to ZOHO on a friend's recommendation. Got the TXT part (verified my domain), but whenever I try to add ANY user, I get the error: This user is not allowed to add in Zoho. Please contact support-as@zohocorp.com for further details I have emailed as well and writing here as well because when I searched, I saw many people faced the same issue and instead of email, they got a faster response here. My domain is: raisingreaderspk . com Hope this can be resolved.  Thank you
        • Export History timeline

          Hi, I have an idea, bout zoho desk history of the ticket it would be great if the agent or admin of the zoho desk can export the timeline of the ticket history for agent report or on other matter.
        • Desk fails to create a new ticket on Reply email

          When I send a direct email to support@mysite.com, Desk will create a new ticket as expected. When I REPLY to an email sent from support@mysite.com, Desk will NOT generate a new ticket. This is very bad. How can I fix this? Use case: In a separate system
        • Condition based aggregate fields in subforms

          Hello everyone, We're excited to inform you about the latest enhancements made to our aggregate field capabilities in subforms; create aggregate fields based on conditions! An aggregate field is a column on which a mathematical function has been applied.
        • Is there a way to disable the Activity Reminders Pop-Up Window every time I log in?

          Just wondering if there is a setting to disable the window from opening every time I open my CRM? Thanks Chris
        • Ask the Experts 25: Experience the full spectrum of Zoho Desk’s autumn and spring releases for 2025

          Hello Everyone, We’re on the 25th episode of our ATE series! It's a true milestone in our live community interactions! It’s been an amazing journey since we started in October 2018. Zoho Desk has come a long way, evolving with the support of a wonderful
        • Printing Multi-Page Reports (PDF Export)

          Hi, I am moving a report from Google's Looker Studio to Zoho Analytics and trying to reproduce the Looker page by page dashboard editing experience. With Google, what you see is what you get when you print to PDF. But I can't seem to create the same experience
        • Addin Support in Zoho Sheet

          Is there any addin support available in zoho sheet as like google marketplace to enhance productivity by connecting with other apps, providing AI data analysis, streamlining business processes, and more?
        • Mass Update of Lookup Fields not possible

          Hello List I've created a custom field for Leads and Contacts 'Current Campaign'. This is very Handy as I can filter leads and then related them to a campaign. Everything ready, but then I realized that mass update doesn't work for lookup fields... a
        • Zoho Books | Product updates | November 2025

          Hello users, We’ve rolled out new features and enhancements in Zoho Books. From translating email notification templates to the new transaction locking restrictions, explore the updates designed to enhance your bookkeeping experience. Making Tax Digital
        • Function #61: Automatically add free item to the invoice based on item quantity

          Hello everyone, and welcome back to another Custom Function Friday! During holiday seasons or special promotions, businesses offer deals like BOGO (Buy One, Get One), Buy 3 Get 1 Free, Buy 2 at 50% off, and much more to attract customers. These promotions
        • Notes for Items for Future Purchase Order

          Next time when I order an item, tau have to make some changes in it, that order has to be placed after 4-5 months, I want to save those changes or points somewhere in the item, how will that be possible..
        • Schemes of different tyoe

          How can easily apply hourly, day wise or month wise  schemes on Bill, Quantity, and other schemes. Like I want to apply a scheme  Form today to next 7 days .where i can mention in zoho books so scheme will implement automatically to all customers and
        • Alphabetically

          How can i arrange alphabetically - (Manage Manufacturer) Field in Item Master 
        • Zohomail

          Im trying to setup email address zoho
        • Clients not receiving emails

          I've been informed that my emails are not being received. Is there anything that I should look into to rectify this? Many thanks!
        • Double opt-in notifications and customizable confirmation messages for your webforms

          Dear CRM Community, We are excited to announce a major upgrade to our Webforms feature. You can now customize the confirmation message shown to your users who double opt-in from your webform and also customize your confirmation emails when they submit
        • Enterprise subscription support

          My organization sells subscription services to enterprise customers, which is a different model from the consumer subscription model that Zoho Billing has been designed to support and I beleve this capability should be added. An enterprise subscription
        • Free Plan mail accounts details

          In the zoho mail pricing there's a free plan that includes: FREE PLAN Up to 25 Users 5GB* /User, 25MB Attachment Limit Webmail access only. Single domain hosting. I need to make sure that I'm able to create multiple email accounts in the form of: name@domain.com
        • ZOHO Mail App Not working

          There seems to be an issue with Zoho Mail App today. It is not connecting to server, internet is working fine, tried uninstalling app and reinstalling, loading circle keeps spinning round. Is there an update on the way?
        • No more IMAP/POP/SMTP on free plans even on referrals with NO NOTICE

          Outraged. Just referred a colleague to use her domain (not posting it publicly here) to Zoho, just as I have other colleagues, clients, friends. Expected the exact same free plan features as I have and as everyone else I ever referred got. I was helping
        • Unable to receive email - "5.3.0 - Other mail system problem 554-'5.2.3 MailPolicy violation Error delivering to mailboxes'"

          My users are unable to receive emails from one particular domain, apparently. The domain known to be kicked back is whitelisted in the spam control. I sent an email to support earlier this morning but I have not received a reply. The error in the title
        • Caixa de saída bloqueada. Como desbloquear?

          Olá, meu e-mail isabela.celli@sivirino.com está com a caixa de saída bloqueada. Não consigo enviar e-mails. Acredito que tenha sido porque mandei o mesmo e-mail para várias pessoas, pedindo uma cotação de serviço. Vocês podem desbloquear para mim? Quantos
        • Zoho Forms - Improve the CRM integration field to query data from more than one module

          Hi Forms team, Something I get stuck on regularly is pre-populating a form with data when that data is spread across 2 or 3 modules. For example Contacts, Accounts and Deals. I don't want to duplicate the information in CRM so I end up writing a function
        • desbloquear cuenta

          Buenos dias  Cordial saludo Tengo una cuenta libre en zoho mail asociado a un dominio, pero uno de los usuarios se bloquea el correo porque dice que ha excedido el límite de correo, por favor podrian desbloquearla y como hago para que esta persona debe enviar sus correos sin ningun probleama. Gracias de antemano
        • Not Receiving Incoming Mail

          I can send emails from my account but I do not receive any. I originally set up forwarding and it worked for a while and then stopped. I turned off forwarding and now do not receive any emails. Could you please check what is causing this issue? Thank you
        • Next Page