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
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:
- Creating an extension.
- Configuring the plugin manifest.
- 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
Extension configuration
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 tab - Please 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
Getting error "invalid warehouse_id" when trying to update any transaction in Zoho books
I got a message from Zoho saying that the Warehouse and Branch has been merged into one category "Locations" Once I migrated to this setup I was no longer able to edit any invoice / create creadit notes - got an error saying "invalid warehouse_id" I never
Access invoice custom modules data from API
Hi, I am using $url = "https://www.zohoapis.eu/invoice/v3/invoices"; $opts = ["http" => [method" => "GET",header" => [ "Authorization: Zoho-oauthtoken $accessToken", "X-com-zoho-invoice-organizationid: $orgId" ] ] ]; From my app to retrieve the invoices,
It would be very helpful to be able to use variables in the formula columns
Currently, variables can be used only in aggregated formulas. It would be great to be able to use them in regular formulas as well
Bulk Update API
I’m reaching out to see if anyone has updates on the bulk records feature release. We’re eager to leverage this functionality for our operations, but until it becomes available, our current API call limits are proving to be a bottleneck—even after upgrading
Proper syntax for filtering Added_Time in the URL using functionality-based URLs
I haver intermediate knowledge of functionality-based URLs. I say that because when I use them, it is never straight forward with me. Sometimes it works first try, and sometimes I spend hours exploring to find the proper syntax. link to operators: https://help.zoho.com/portal/en/kb/creator/developer-guide/others/url-patterns/articles/functionality-based-urls#List_of_operators_and_their_constants
AI that checks text content quality and for plagiarism
Hello, A client has a requirement where the users will be typing in content consisting of multiple paragraphs in Creator. The text box will be checked for plagiarism and also for its quality. What would be the best approach for that?
404 Error When Using record_cursor in ZOHO.CREATOR.DATA.getRecords (js api)
Iam working on fetching all records from a Zoho Creator report using the Get Records API (V2.1) with the following recursive function: js CopyEdit // Recursive function to fetch records using record_cursor from the response
function fetchAllRecords(recordCursor
Reusable Variables
I’d like to know if there’s a way to store variables in Zoho Analytics that I can use in metrics or calculations. For example, I have a Currencies table that stores the value of different currencies over time. I’d like to use the value of the US dollar
Linking Purchase Orders to Task budgets
Hi, We are a construction company within the mining industry. Our projects usually have fixed budgets (Cost budgets per task). Is it possible to link Purchase Orders to task budgets? I know you can link the Purchase order to a project, but this is not
Introducing prompt builder in Zoho CRM
We’ve introduced a new way to put Zia’s generative AI to work—right where your teams need it most. With the all new prompt builder for custom buttons, you can create your own AI instructions to generate tailored content, suggestions, or summaries across
Create Tasklist with Tasklist Template using API v3
In the old API, we could mention the parameter 'task_template_id' when creating a tasklist via API to apply a tasklist template: https://www.zoho.com/projects/help/rest-api/tasklists-api.html#create-tasklist In API v3 there does not seem to be a way to
Facing issue in getting data through api calls
I have send data of users and want to get the data oof users but facing issue with one field for that I want help
invokeURL to change custom field
I have a deluge script that currently runs as a Schedule. It works exactly as intended, however I've recently been informed by Zoho that there's some mechanism in place to block changes made by a script when it runs on a schedule from being detected by
How to stop workflow running twice on a record
Hi I have a workflow as below Trigger: Lead record is created/edited - Repeat this workflow whenever a lead is edited is NOT TICKED Condition: When Lead Stage is MQL Action: Reassign Lead, Create Task If the Lead goes into stage MQL, and then it changes
Customize the ticket ID for enhanced ticket tracking
Hello everyone, Ticket IDs in Zoho Desk are the unique reference numbers that are assigned to tickets when they're created. Agents generally use the ticket ID to locate a particular ticket and to reference a ticket in conversations and feeds. When customers
FSM Function not executing
Good Afternoon, all I am working on a workflow function in FSM and yesterday it was working fine. Now today when I select "Save & Execute" it does nothing. I even tested it with just a info statement and it is not executing. Any help would be greatly
DKIM cannot be enabled for the domain as no verified default selector present
Can't get the DKIM working. May you please check my account (nksy.us) to see what's wrong?
Boost collaboration in your sales process with Team Selling and Deal revenue's Split—empowering your Zoho CRM for smarter teamwork!
This feature is currently available for the AU and SA DCs. It is being rolled out in a phased manner and will be available to all users shortly. Hello everyone, As you may all know, closing a deal is rarely a one-person effort. It often involves multiple
Create modules using natural language prompts
Hello all, We’ve introduced a new enhancement to Zia that allows you to create custom and team modules in Zoho CRM using plain language prompts. Why this enhancement? Creating a custom module traditionally involves multiple steps—choosing field types,
Suggesting enhance for criteria based data-sharing rules
I suggest that, for user fields, the logged-user system variable could be used. This would allow the user, for example, to access records in which he/she is mentioned in a specific field, other than the owner. Thanks! Eduardo
How to sync read mails to GMail?
Hello I am testing Zoho TeamInbox but I have an issue with my connected GMail account. Whenever I read a mail in TeamInbox or even reply to it, the email stays as "unread" in GMail. Is this normal behaviour? I thought that with the 2-way sync of IMAP
Look up field and show or hide section based upon selection
Hi there, I am looking to show or hide a section within the opportunities module based on the value of the selection in the look-up field. This feature does not seem to be there Is there a workaround, and is this option coming in a future release? Thanks
eway Bill - Import (Good / Material)
As we Importer of goods , for That first we Generate PO then , Payment, then after We create Bill of Entry After Bill of Entry Anywhere (99%) cases material that arrived to port that comes to warehouse / factory for that Eway bill , we have to create
Import of Bank Statement DO NOT work - Date Mapping issue - Basic Feature Issue Becoming Serious Pain
Hello, Yes, This is True. Importing Bank Statement feature is Not working as Intended. Facing few issues. Specially regarding the Mapping of Date field format. No matter how many times, we create a Case with Support team, they are NOT supporting in proper
Approval Workflow for Purchase Orders Abrir
The requirement is , that all purchase orders greater than or equal to 5000 go through an approval process from certain people, but within books I only see that the approvers can be by levels or any approver but we cannot enter a rule like these. Can
How to see and amend Primary Clients easily
Hi, i'm trying to make some reports on the clients we do projects for. However, i'm seeing a lot of "unknown" clients in the Zoho Analytics report. I suspect that these projects have not been assigned well and this needs to be corrected. Where can i easily
ZOHO NEEDS TO CREATE AN OPTION TO PASS CREDIT NOTE AGAINST SALES RECEIPT
Zoho needs to find a way to pass credit note on sales receiptS. Creating a dummy invoice is causing major issues in tallying our sales figures and compliance with tax authorities.My system is tied to tax agencies and trying these options causes major
INTERGRATION OF ZOHO BOOKS PREMIUM PLAN AND ZOHO INVENTORY STANDARD PLAN
Hello. I was using Zoho Books premium plan with 3 branches and has been working well until I purchased Zoho Inventory Standard plan. Now my 3rd branch location has been deactivate din Zoho Premium. how can I solve this please since I use all the locations
Exporting Templates
I have just spent 2 hours creating a project template for a Netsuite configuration, and want to share it with other Zoho Projects users - who have a different account. Is there any way to do this?
It's time to say goodbye to Zoho Recruit for me.
Hello, I have been a Zoho Recruit user since 2013. The tool has evolved, with a better UI, new features and so on. The pricing is still a great asset too. BUT, that being said, important features are not coming fast enough. I tried to share my point of
Automation#34: Schedule Guided Conversations (GC) Based on Business Hours
Hello Everyone, Welcome to this episode on configuring your Guided Conversations (GC) based on your business hours. In our previous episode on Guided Conversations, we covered how to set up GC to enable offline support. This time, we'll guide you through
Download PDF from File Field with the name in another single line field
Hi I am storing a PDF file in a File Field of a Form using Zapier automatically. now i need to download that file and set its file name as per the value stored in a single line field in that form. ANy turnout for that Thanks
Custom Module missing SDK function fetchRelatedRecords(...) in a Client Script
Good day, We have added a new module with a Multi-Lookup relation to Contacts. When we tried to use the fetchRelatedRecords(id, related_list_api_name) function to get Related Records it is missing for our new custom module. https://js.zohocdn.com/crm/5124797/documentation/DotSDK/Modules.html
TeamInbox and Desk Integration is Broken
I use the TI -> Desk integration a lot. Today, it broke, again. When I go to create a Ticket from TI, an error message on a red background is shown "oops something went wrong". Checking the developers console on my browser, there are many 500 errors relating
Couldn't connect to host, port: wordpress2224249.home.pl, 143; timeout 10000
Hey, i get a error up "Couldn't connect to host, port: wordpress2224249.home.pl, 143; timeout 10000" But i tried same passwords and info. to make imap on hotmail. and it works flawlessly. Has to be something with zoho....
Reply-To Match condition for Inbound Mail Messages
I've trying to setup a rule to match the "reply-to" header but can't find any condition that would match this in Zoho TeamInbox rules. The business case is that I've setup my team inbox to be a member of a google group. The result of that is that emails
No Emails Flowing To Zoho TeamInbox
From today, any emails we send to our TeamInbox addresses fail to be delivered. Our TeamInbox is connected via IMAP to 2 x Zoho Mail accounts. If I log in to those accounts directly via Zoho Mail, I can see all the emails landing in the inbox. The emails
How to download Renamed File that already updated to Zoho Creator.
Hi members, I construct a button with report workflow. link = "https://creatorexport.zoho.com" + zoho.appuri + "report_link_name/File_upload/image-download/" + input.File_upload; openUrl(link,"new window"); This script able to download the file. But I
Merge Join PDFs Zoho Creator
Hi all, I have a field where users upload PDF, is it possible to join those pdfs into one with a function or something? Regards.
Project Statuses
Hi All, We have projects that sometimes may not make it through to completion. As such, they were being marked as "Cancelled". I noticed that these projects still show as "Active" though which seems counter intuitive. In fact, the only way I can get them
Next Page