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

    • Canadian Banks ?

      Can you advise which Canadian Banks can be used to fully sync credit cards and bank accounts? Thanks
    • Sorry! we encountered some problems while sending your campaign. It will be sent automatically once we are ready. We apologize for the delay caused.

      Hello. Lately we are having problems with some campaigns, which show us this error message. Sorry! we encountered some problems while sending your campaign. It will be sent automatically once we are ready. We apologize for the delay caused. We can't find
    • Can I remove or divert certain contacts from an active Campaigns workflow?

      I have created a workflow in Zoho Campaigns, which sends different emails, once contacts have been added to a mailing list. To choose which email to send to the contacts, there are conditions, which divert contacts based on their company type and their company size. There was a subsection of this workflow, where company size wasn't selected correctly, and some contacts have been sent down the wrong path and received the wrong email. The workflow contains a reminder loop and a further series of emails.
    • How to map fields from Zoho Recruit to Zoho People

      I've got these fields from my Job Offer that I'm trying to map to the Work information fields in Zoho People, but they arent showing up. For example, how do I get the department name field (in the job post) to map to the work information field in Zoho
    • UTM in zoho campaigns

      Helloo everybody!!! Someone know how IF ZOHO CAMPAIGNS has UTM for tracking the url of any campaigns. thank u
    • Full Context of Zoho CRM Records for Zia in Zoho Desk for efficient AI Usage

      Hello everyone, I have a question regarding the use of Zia in Zoho Desk in combination with CRM data. Is it possible to automatically feed the complete context of a CRM record into Zia, so that it can generate automated and highly accurate responses for
    • Knowledge base printing

      I saw a posting about printing the knowledge base as I was looking for the answer, but we would like the ability to print out the entire knowledge base with a click, keeping the same organization format.   Bonus would include an index of keywords and
    • Search not working!

      I have items in my notebook tagged but when I search for a tag nothing comes up! Any fix for this?
    • Updates for Zoho Campaigns: Merge tag, footer, and autoresponder migration

      Hello everyone, We'd like to inform you of some upcoming changes with regard to Zoho Campaigns. We understand that change can be difficult, but we're dedicated to ensuring a smooth transition while keeping you all informed and engaged throughout the process.
    • How do i integrate google analytics to Zoho Campaigns?

      Looking to track Zoho Traffic from email Current topic is outdated
    • How do teams manage meeting follow-ups across Zoho tools?

      We’re using Zoho tools for collaboration and tracking, but managing meeting notes, action items, and follow-ups across teams is still challenging. Curious how others are handling this within Zoho workflows. Are there best practices or integrations that
    • Mejoras urgentes para ZOHO MEETING

      Tengo unos meses usando Zoho Meeting. En general, es buena, pero hay cosas vitales que no logra cumplir con mínima calidad. 1) Calidad de audio y video: urge mejoras. Audio con retraso, imagen borrosa, mal recorte de silueta con fondos virtuales. Además,
    • Saving sent email campaign as PDF

      I'm looking to add all campaigns sent to an archive folder in sharepoint. Is there anyway to accomplish this in Zoho Flow ? I'm falling at the first hurdle ... can I automatically save a sent campaign as a PDF to a folder location ?
    • Exporting All Custom Functions in ZohoCRM

      Hello, All I've been looking for a way to keep about 30 functions that I have written in Zoho CRM updated in my own repository to use elsewhere in other instances. A github integration would be great, but a way to export all custom functions or any way
    • Conditional Layouts On Multi Select Field

      How we can use Conditional Layouts On Multi Select Field field? Please help.
    • Appreciation to Qntrl Support Team

      We are writing this topic to appreciate the outstanding level of support from Qntrl Team. We have been using Qntrl since 2022 after shifting from another similar platform. Since we joined Qntrl, the team has shown a high level of professionalism, support,
    • How can I hide "My Requests" and "Marketplace" icon from the side menu

      Hello everybody, We recently started using the new Zoho CRM for Everyone. How can I hide "My Requests" and "Marketplace" from the side menu? We don't use these features at the moment, and I couldn't find a way to disable or remove them. Best regards,
    • Whatsapp Integration on Zoho Campaign

      Team: Can the messages from Zoho Campaign delivered through Whatsapp... now customers no longer are active on email, but the entire campaign module is email based.... when will it be available on whatsapp.... are there any thirdparty providers who can
    • Mandatory Field - but only at conversion

      Hello! We use Zoho CRM and there are times where the "Lead Created Date & Time" field isn't populated into a "Contractor" (Account is the default phrase i believe). Most of my lead tracking is based on reading the Lead Created field above, so it's important
    • Using data fields in Zoho Show presentations to extract key numbers from Zia insights based on a report created

      Is it possible to use data fields in Zoho Show presentations along with Zoho Analytics to extract key numbers from Zia insights based on a report created? For example, using this text below: (note that the numbers in bold would be from Zia Insights) Revenue
    • Free webinar: AI-powered agreement management with Zoho Sign

      Hi there! Does preparing an agreement feel like more work than actually signing it? You're definitely not alone. Between drafting the document, managing revisions, securing internal approvals, and rereading clauses to make sure everything still reflects
    • WhatsApp Channels in Zoho Campaigns

      Now that Meta has opened WhatsApp Channels globally, will you add it to Zoho Campaigns? It's another top channel for marketing communications as email and SMS. Thanks.
    • CRM For Everyone - Bring Back Settings Tile View

      I've been using CRM for Everyone since it was in early access and I just can't stand the single list settings menu down the left-hand side. It takes so much longer to find the setting I need. Please give users the option to make the old sytle tile view
    • Lets have Dynamics 365 integration with Zohobooks

      Lets have Dynamics 365 integration with Zohobooks
    • Add notes in spreadsheet view

      It would be great if we could Add/edit notes in the spreadsheet view of contacts/leads. This would enable my sales teams to greatly increase their number of calls. Also viewing the most recent note in the Contact module would also be helpful.
    • Opening balances - Accounts Receivable and Payable

      Our accounting year starts on 1st August 2013 and I have a Trial Balance as at that date, including Accounts Receivableand Accounts Payable balances, broken down by each customer and supplier. Q1 - do I show my opening balance date as 31st July 2013 or
    • Cancel Subscription

      Hi , Im want to cancel my account but without success please help me to do it
    • Making an email campaign into a Template

      I used a Zoho Campaign Template to create an email. Now I want to use this email and make it a new template, but this seems to be not possible. Am I missing something?
    • Direct Access and Better Search for Zoho Quartz Recordings

      Hi Zoho Team, We would like to request a few enhancements to improve how Zoho Quartz recordings are accessed and managed after being submitted to Zoho Support. Current Limitation: After submitting a Quartz recording, the related Zoho Support ticket displays
    • Multiple Cover Letters

      We are using the staffing firm edition of Recruit and we have noticed that candidates cannot add more than one cover letter. This is a problem as they might be applying for multiple jobs on our career site and when we submit their application to a client,
    • URGENT: Deluge issue with Arabic text Inbox

      Dear Deluge Support, We are facing an issue that started on 12/Feb/2026 with custom functions written using Deluge within Qntrl platform. Currently, custom functions do not accept Arabic content; it is replaced with (???) characters. Scenario 1: If we
    • File Conversion from PDF to JPG/PNG

      Hi, I have a question did  anyone every tried using custom function to convert a PDF file to JPG/PNG format? Any possibility by using the custom function to achieve this within zoho apps.  I do know there are many third parties API provide this with
    • Now in Zoho One: Orchestrate customer journeys across apps with Zoho CommandCenter

      Hello Zoho One Community! We’re excited to introduce Zoho CommandCenter as a new capability available in Zoho One. For the whole customer journey As Zoho One customers adopt more apps across sales, marketing, finance, and support, a common challenge emerges:
    • annualy customer report

      we need a report per customer that looks like this invoic number cleaning laundry repair management 01 january xxx euro xx euro xx euro xxx euro 02 february xxx euro xxx euro x euro xxxx euro and so on the years 12 months is that possible to make and
    • Totals for Sales Tax Report

      On the sales tax report, the column totals aren't shown for any column other than Total Tax. I can't think of a good reason that they shouldn't be included for the other columns, as well. It would help me with my returns, for sure. It seems ludicrous
    • Free Webinar: Zoho Sign for Zoho Projects: Automate tasks and approvals with e-signatures

      Hi there! Handling multiple projects at once? Zoho Projects is your solution for automated and streamlined project management, and with the Zoho Sign extension, you can sign, send, and manage digital paperwork directly from your project workspace. Join
    • Exported Report File Name

      Hi, We often export reports for information. It is time consuming to rename all the reports we export on a weekly basis, as when exported their default name is a seemingly random string of numbers. These numbers may be important, I'm not sure, but I am
    • Automatic Refresh on Page?

      Hi everyone, We use a page as a dashboard which shows data for the laboratory and tasks pending etc. Is there a way to set the page to automatically refresh on a X time? Many thanks TOG
    • Add RTL and Hebrew Support for Candidate Portal (and Other Zoho Recruit Portals)

      Dear Zoho Recruit Team, I hope you're doing well. We would like to request the ability to set the Candidate Portal to be Right-to-Left (RTL) and in Hebrew, similar to the existing functionality for the Career Site. Currently, when we set the Career Site
    • Default Reminder Time in New Tasks or New Event?

      Any way to change this from 1:00am? Thanks, Gary Moderation Update (February 2026): With the Calendar preferences, the default reminder time for Meetings, Appointments and All-Day Meetings can be set. Read more: Calendar preferences in Zoho CRM Regarding
    • Next Page