Kaizen #108 - Integrating Third Party Application with Zoho CRM using Java SDK

Kaizen #108 - Integrating Third Party Application with Zoho CRM using Java SDK

Hello, everyone! Welcome to another Kaizen week. In this post, we will discuss how third-party applications can integrate with Zoho CRM using Java SDK 5.0.

Use case 

Zylker is a real-estate app which can integrate with any CRM vendor and uses that data for it's use-cases. Zylker uses Java for the backend server code. Now they want to integrate with Zoho CRM.  How will they do it? Those users could be in different Zoho data centers like Europe (.eu), USA(.com), India(.in), Australia(.com.au) etc. With Zoho CRM's Java SDK 5.0, which consumes Zoho CRM v5 APIs, we can to do authorization and establish this integration. Zylker will write one common code and it should be usable for any CRM orgs across all DCs. 

Java SDK Project dependency

Include the Java dependency using either Maven or Gradle. The maven dependency is as below:

<repositories>
<repository>
<id>zohocrmsdk-5-0</id>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.zoho.crm</groupId>
<artifactId>zohocrmsdk-5-0</artifactId>
<version>4.0.0</version>
</dependency>
</dependencies>


If you are not using Maven or Gradle, please include the Zoho CRM Java SDK JAR and dependant JARs directly into the Java build path.

Setting up the OAuth client 

Create a Server-based Application in the corresponding API console page (https://www.zohoapis.{com/in/eu/com.au}). Enable "Multi-DC" under Settings of the app. Choose "Use the same OAuth credentials for all data centers". With this, you can use the same client ID, client secret, and redirect URI to authorize any Zoho account in any data center. Please refer to our previous posts to know more about domains and environments [Part -1] and [Part - 2].

Integrating the client with your application

In Zylker's web UI, there will be an option to integrate with Zoho CRM. The integration can be initiated from a link or a button containing the authorization URL, along with the corresponding client ID, state, redirect URI, and OAuth scopes. Once the user clicks on this link/button and completes the OAuth authorization process on Zoho, they will be redirected to the specified redirect URI with HTTP parameters location, code, accounts server, and state. These parameters can be utilized within the Java code logic of the redirect URI to begin using the Zoho CRM Java SDK.
The codes used in this post are hosted here for reference. We will focus on two distinct steps as mentioned below, for Zylker integration with Zoho CRM using Java SDK.
     1.  Authorize with Zoho CRM
     2. Fetching data from Zoho CRM

1. Authorize with Zoho CRM 

The aim of this step is to connect with the user's Zoho CRM and store the token details such as refresh token, access token and expiry time in the preferred datastore like MySQL, pgSQL etc. Once the user lands on the redirect URI after the OAuth2.0 authorization, we can extract the email of the logged-in user from zylker.com cookies. We also obtain the grant token and location from the redirect_uri of the authorization request. We pass these three values to the below integrateZohoCRM() function. This function takes care of creating a token for the connected Zoho CRM account and persisting it in the preferred datastore.


public static Boolean integrateZohoCRM(String location, String grant_token, String user_email) 
{
Boolean integrationStatus = Boolean.FALSE;
try {
Environment environment = DataCenter.get(location);
OAuthToken userToken = new OAuthToken.Builder()
                .clientID(OAuthClientDetails.CLIENT_ID)
                .clientSecret(OAuthClientDetails.CLIENT_SECRET)
                .grantToken(grant_token)
                .redirectURL(OAuthClientDetails.REDIRECT_URL)
                                 .userSignature(new UserSignature(user_email)) //email of the user who is trying to integrate with Zoho CRM          
                                 .build();
new Initializer.Builder().environment(environment).token(userToken).initialize(); 
integrationStatus = Boolean.TRUE;
    } catch (SDKException e) {
e.printStackTrace();
    } catch (Exception e) {
e.printStackTrace();
    }
return integrationStatus;
}

Refer here for the exact code section.

OAuthToken.Builder() creates a new instance of the builder for the OAuthToken class. It allows you to conveniently set up the necessary details for creating an OAuth token for authentication purposes. On passing the client ID, client secret, grant token, redirect URL, and user signature to the OAuthToken.Builder() method, we get the userToken object. One more important thing to note is that we have set the user signature as .userSignature(new UserSignature(user_email)) . This means that we are referring to the token uniquely by the email id of the logged-in Zylker user. The same signature should be used for any further operation to be done in Zoho CRM on behalf of this user.
Now that we have the OAuthToken object, we can send it to the Initializer class (as shown below) to create the refresh/access tokens and persist it.


 new Initializer.Builder().environment(environment).token(userToken).initialize(); 


As we haven't mentioned anything about where to do the persistence, by default the token details are persisted in a file named 'sdk_tokens.txt' using File Persistence. The content of the file would look like the following:


"id","user_name","client_id","client_secret","refresh_token","access_token","grant_token","expiry_time","redirect_url","api_domain" //Do not clear this default format, or else you will need  to generate a grant token again  in order to run the program.
"1","patricia@gmail.com","1000.xxxxx","xxxxxx","1000.xxxxxx.xxxx","1000.xxxxxxxxx.xxxxxxx","1000.xxxxxxxxx.xxxxxxx","1697370902510","https://www.zoho.com","https://www.zohoapis.com"



Apart from File Persistence, tokens can be persisted using Database persistence or Custom persistence.

Note

When Zoho introduces a new DC in future, it will be enough to update the project with the latest version of Zoho CRM Java SDK 5.0 and no further code change will be required. 

2. Fetching data from ZohoCRM

Once the integration is done, we can create OAuthToken with the user's email as UserSignature and call Zoho CRM Java SDK function. This will fetch the data specific to the user. The following fetchCRMData() function is a sample to fetch data from Zoho CRM.


public static void fetchCRMData(String email) throws Exception {
    OAuthToken userToken1 = new OAuthToken.Builder()
        .userSignature(new UserSignature(email))
        .build();
    new Initializer.Builder().token(userToken1).initialize();
    RecordOperations ro = new RecordOperations();
    ParameterMap paramInstance = new ParameterMap();
    List < String > fieldNames = new ArrayList < > (Arrays.asList("Company", "Email"));

    paramInstance.add(RecordOperations.GetRecordsParam.FIELDS, String.join(",", fieldNames));

    @SuppressWarnings("rawtypes")

    APIResponse response = ro.getRecords("Leads", paramInstance, null);

    .

    .

    .

}
 

Refer here for the exact code section.


In this example, we use the SDK's RecordOperations()  for retrieving records from the Leads module. This is done in the following steps:
  •  A new instance of RecordOperations is being created and assigned to the variable ro. This object handles operations related to records in Zoho CRM.  
  • ParameterMap instance is used to specify request parameters for the API calls. We can fetch the Company and the Email fields from the Leads module by passing them as the FIELDS parameter. 
  • We use the getRecords() method to make the API request via SDK, which fetches the respective CRM data.


We hope you found this post useful and interesting.  Stay tuned for more exciting posts.

Previous Kaizen Post : #107 Field Trackers in Zoho CRM

For more topics on Kaizen, please refer to our Kaizen collection here.







    Access your files securely from anywhere

        All-in-one knowledge management and training platform for your employees and customers.






                              Zoho Developer Community




                                                    • Desk Community Learning Series


                                                    • Digest


                                                    • Functions


                                                    • Meetups


                                                    • Kbase


                                                    • Resources


                                                    • Glossary


                                                    • Desk Marketplace


                                                    • MVP Corner


                                                    • Word of the Day


                                                    • Ask the Experts



                                                              • Sticky Posts

                                                              • Kaizen #198: Using Client Script for Custom Validation in Blueprint

                                                                Nearing 200th Kaizen Post – 1 More to the Big Two-Oh-Oh! Do you have any questions, suggestions, or topics you would like us to cover in future posts? Your insights and suggestions help us shape future content and make this series better for everyone.
                                                              • Kaizen #226: Using ZRC in Client Script

                                                                Hello everyone! Welcome to another week of Kaizen. In today's post, lets see what is ZRC (Zoho Request Client) and how we can use ZRC methods in Client Script to get inputs from a Salesperson and update the Lead status with a single button click. In this
                                                              • Kaizen #222 - Client Script Support for Notes Related List

                                                                Hello everyone! Welcome to another week of Kaizen. The final Kaizen post of the year 2025 is here! With the new Client Script support for the Notes Related List, you can validate, enrich, and manage notes across modules. In this post, we’ll explore how
                                                              • Kaizen #217 - Actions APIs : Tasks

                                                                Welcome to another week of Kaizen! In last week's post we discussed Email Notifications APIs which act as the link between your Workflow automations and you. We have discussed how Zylker Cloud Services uses Email Notifications API in their custom dashboard.
                                                              • Kaizen #216 - Actions APIs : Email Notifications

                                                                Welcome to another week of Kaizen! For the last three weeks, we have been discussing Zylker's workflows. We successfully updated a dormant workflow, built a new one from the ground up and more. But our work is not finished—these automated processes are


                                                              Manage your brands on social media



                                                                    Zoho TeamInbox 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

                                                                                                Get Started. Write Away!

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

                                                                                                  Zoho CRM コンテンツ



                                                                                                    Nederlandse Hulpbronnen


                                                                                                        ご検討中の方




                                                                                                                • Recent Topics

                                                                                                                • Automation Series: Assign Subsequent Task Owner on Completion

                                                                                                                  When a project progresses, tasks get piled up over time. As new tasks are created, tracking ownership and assigning them can become time consuming. In a pharmaceutical manufacturing unit, the procurement phase involves a set of tasks such as raw material
                                                                                                                • In-House, Non-Billable Projects

                                                                                                                  I use Zoho Projects solely for in-house projects with fixed cost budgets.  Only bills and expenses need to be charged against the budget.  There are no customers to be billed or invoices to be created. How can such a non-billable project be set up?   As
                                                                                                                • [Webinar] What's New in Zoho Analytics: Q1, 2026

                                                                                                                  To all the data enthusiasts out there, we're back again with another power-packed webinar in the What's New series! This last quarter was marked by exciting new features and product updates focused on offering you top-notch solutions. With new data connectors,
                                                                                                                • Ask The Expert: Deep Dive into Zoho CRM, Desk, SalesIQ, and Campaigns!

                                                                                                                  Are you using Zoho to power your sales, support, and marketing, and have questions about configuration, automation, or best practices? We have great news: the “Ask The Expert” session is coming to the Zoho Benelux Community! This session is specifically
                                                                                                                • Introducing parent-child ticketing in Zoho Desk [Early access]

                                                                                                                  Hello Zoho Desk users! We have introduced the parent-child ticketing system to help customer service teams ensure efficient resolution of issues involving multiple, related tickets. You can now combine repetitive and interconnected tickets into parent-child
                                                                                                                • Workflows being applied and the Large unwanted popup

                                                                                                                  When a workflow is being applied do to an action, then the Agent is left with a large Window asking if they would like the see the changes this workflow did. Is there any way to disable this prompt from appearing?
                                                                                                                • Users I've shared the sheet with cannot use the Custom Functions

                                                                                                                  Hi, I have a Zoho Sheet worksheet that I shared to 2 colleagues, giving them full access: In that worksheet, I created a button with a custom Deluge function and it works flawlessly for me: For those I shared the worksheet to, when they click the button,
                                                                                                                • Limiting the form - Zoho People

                                                                                                                  Hi Team, I would like to limit the number of form/request submissions for employees within a given month. For example, if an employee has already submitted 3 requests in the current month, they should not be allowed to submit any further requests. An
                                                                                                                • Zoho Analytics: Clarification on Email Schedule Limits in Basic Plan

                                                                                                                  Hi Team, I have a question regarding the email scheduling limits in the Zoho Analytics Basic Plan. The plan shows that I can create 4 email schedules. However, I understand that schedule consumption is calculated based on recipients (i.e., 1 schedule
                                                                                                                • Zoho Books | Product updates | April 2026

                                                                                                                  Hello users, Welcome to our April 2026 product updates roundup! Highlights include profit margin for sales transactions, insights in reports, recording deposits from undeposited funds in banking, and faster production workflows with improved assembly
                                                                                                                • Zoho Form not synching with Zoho CRM in CRM email template

                                                                                                                  I have in the past successfully created an email template that has access to a Zoho Form in the url link to Forms in the email template. I am in the Contact Module of the CRM and I have created a Form for contacts and mapped the two. I am using the upsert
                                                                                                                • Standardize your booking forms with Centralized Customer Form

                                                                                                                  We’re excited to introduce Centralized Customer Form, a new way to manage and standardize how customer information is collected across your event types. With this feature, you can define a common set of booking form fields once and apply them across your
                                                                                                                • Zoho Creator In-App Notification

                                                                                                                  Hi Team, I have implemented an in-app notification using code, as it required some customization. I followed the example in the link below: https://www.zoho.com/deluge/help/pushnotify-using-deluge.html#Example I have a couple of questions regarding this
                                                                                                                • Add Flexible Recurrence Options for Meeting Scheduling in Zoho Cliq (e.g., Every 2 Weeks)

                                                                                                                  Hello Zoho Cliq Team, We hope you are doing well. Currently, when scheduling a meeting inside Zoho Cliq, the recurrence options are limited to Daily, Weekly, Monthly, and Yearly. There is no ability to set a meeting to occur every X weeks — for example,
                                                                                                                • Announcing Zoho Sheet desktop app for macOS and Windows (Beta)

                                                                                                                  Hello Sheet users, We know you’ve been waiting for this one. It has always been the top priority on our roadmap to provide a single native desktop app for macOS and Windows that works both online and offline. Today, we are excited to announce that the
                                                                                                                • In App Auto Refresh/Update Features

                                                                                                                  Hi,    I am trying to use Zoho Creator for Restaurant management. While using the android apps, I reliased the apps would not auto refresh if there is new entries i.e new kitchen order ticket (KOT) from other users.   The apps does received notification but would not auto refresh, users required to refresh the apps manually in order to see the new KOT in the apps.    I am wondering why this features is not implemented? Or is this feature being considered to be implemented in the future? With the
                                                                                                                • Unable to Log In to FSM Mobile App

                                                                                                                  Hello FSM Team, We are encountering an issue when logging in to the FSM mobile app. When entering the user email, the system shows the error: “This account does not exist.” However, the same user is able to log in successfully via web (fsm.zoho.com).
                                                                                                                • Clarification on “Change Owner” vs Dispatcher Role in Work Orders

                                                                                                                  Hi Mr. Abid, Good day! We would like to understand the purpose and correct usage of the “Change Owner” option in the Work Order module. As we noticed, there is an option to Change Owner in the Work Order. At the same time, there is also a separate field/role
                                                                                                                • New Income Tax Act 2025 and Rules 2026 for India (Effective 1 April 2026)

                                                                                                                  Hello everyone, The Income Tax Act 2025 came into effect from 1 April 2026. This new law replaces the old Income Tax Act of 1961. Along with the new Act, the Income Tax Rules 2026 have also been released by the government. These updates bring practical
                                                                                                                • Facturation électronique 2026 - obligation dès le 1er septembre 2026

                                                                                                                  Bonjour, Je me permets de réagir à divers posts publiés ici et là concernant le projet de E-Invoicing, dans le cadre de la facturation électronique prévue très prochainement. Dans le cadre du passage à la facturation électronique pour les entreprises,
                                                                                                                • How can I delete a user profile created ?

                                                                                                                  I can't delete custom profiles created. Why ?
                                                                                                                • Search API filter/sort ignores comment-triggered modifiedTime updates

                                                                                                                  Summary When a comment is added to a Call or Account, the parent record's modifiedTime is correctly bumped. This bumped value is visible in: GET /api/v1/calls/{id} ✅ GET /api/v1/calls/search without a filter ✅ — the record's response body shows the new
                                                                                                                • ZOHO Cadence

                                                                                                                  Can you edit when a cadence is set to enroll? For instance, I currently have it set up to enroll three days after a new record is created that fits the custom view criteria; however, I would like to change it to enroll immediately. I do not see where
                                                                                                                • Automate the file import step

                                                                                                                  Hello everyone, I have a Sales - 'Account' category, and currently import the file to update it as follows: Import Accounts - From File - Update existing Accounts only - select and match the field the CRM. Since we have been using Microsoft 365 SharePoint.
                                                                                                                • Introducing SlyteUI : From Idea to a Working Interface in Minutes

                                                                                                                  Hello everyone! Are you spending hours building basic UIs? Does even the smallest customization feel like a major task? CRM customization should feel intuitive and straightforward, not time consuming or exhausting. SlyteUI makes this possible by simplifying
                                                                                                                • What's New in Zoho Billing | March 2026

                                                                                                                  March is here with a fresh wave of updates to Zoho Billing. From making compliance easier, reporting more flexible, to making day-to-day workflows smoother across the board. Here's everything that's new this month. Introducing Usage-Based Billing Reports
                                                                                                                • Dynamic Multi-Staff Selection for Ad-Hoc Bookings

                                                                                                                  Summary Allow customers or internal schedulers to select specific staff members at the time of booking, with Zoho Bookings automatically surfacing only the time slots where all selected members are simultaneously available. Current Behaviour Zoho Bookings
                                                                                                                • How Can I Clear Deleted Members and Free Up Their Storage?

                                                                                                                  Can we remove these deleted members and free up their storage?
                                                                                                                • Zoho Books Create Invoice API

                                                                                                                  I am creating zoho invoices via the API.  Now that zoho has released sub-accounts, i'd like to create invoices and link them to sub-accounts within "sales" account.   For example; my chart of accounts looks like this; Sales ->Website Sales    ->Campaign Sales ->Offline Sales However, when I try to pass these accounts to the API, I receive an error that only Bank accounts can be passed with the create invoice.  
                                                                                                                • Multiselect lookup in subform

                                                                                                                  It would be SO SO useful if subforms could support a multiselect look up field! Is this in the works??
                                                                                                                • Ability to Set Text Direction for Individual Cells in Zoho Sheet

                                                                                                                  Dear Zoho Sheet Team, We hope you are doing well. We would like to request an enhancement in Zoho Sheet that allows users to set the text direction (right-to-left or left-to-right) for individual cells, similar to what is available in Google Sheets. Use
                                                                                                                • Problem in usage zoho

                                                                                                                  Difficulty to submit the from in my training to handle ticket on your free trial
                                                                                                                • Contact not saved after editing

                                                                                                                  Hi. I discovered a couple of problems with Zoho contact. (1) BUG. Contact is not saved after editing. If you edit an existing contact by putting a bracket in one of the fields you get the message "Contact updated successfully" but nothing is saved. All updates (including the other fields) are lost. Steps to reproduce. Go to an existing contact and change the first name to "Robert (Bob)". (2) In the phone number fields you can only save numeric data (0 to 9). This seems an unneccessary restriction.
                                                                                                                • Zoho Mail Android app update: UI revamp

                                                                                                                  Hello everyone! We are excited to share that the first phase of the Zoho Mail Android UI revamp is now live. In this update, we have redesigned navigation bar at the bottom to quickly access the Email, Calendar, Contacts, and Settings modules. Also, the
                                                                                                                • Opt-out from mailing list means can't email at all??

                                                                                                                  It seems that if a contact unsubscribes from a mailing list the only way to email them is to uncheck the email opt-out box first, then re-check after the email has been sent. I've been through a chat with support and they confirmed this. This seems bizarre.
                                                                                                                • Email Opt Out Question

                                                                                                                  Has the problem where if a customer is emailed opt out prevents you sending standard emails? For me this feature is simply to stop any email marketing and should not block people from receiving emails via Zoho mobile, which makes no sense.
                                                                                                                • Items Landed Cost and Profit?

                                                                                                                  Hello, we recently went live with Zoho Inventory, and I have a question about the Landed Cost feature. The FAQ reads: "Tracking the landed cost helps determine the overall cost incurred in procuring the product. This, in turn, helps you to decide the
                                                                                                                • Bank Feeds

                                                                                                                  Since Friday my bank feeds wont work. I have refreshed feeds, deactivate and reactivate and nothing is working
                                                                                                                • Show backordered items on packing slip

                                                                                                                  Is it possible to show a column on the Packing Slip that shows number of backordered items when a PO is only partially filled? I would also like to see the Backordered column appear on POs after you receive items if you didn't get ALL of the items or partial amounts of items. And lastly, it would be nice to have the option of turning on the Backordered column for invoices if you only invoice for a partial order. -Tom
                                                                                                                • Newby Questions

                                                                                                                  Q1. The top bar of Zoho Books has a "Search in Banking (/) " field. What is the proper use of this text box? - Searching for Amazon for example has no results but there are transactions. - Is the search case sensitive? - Are regular expressions allowed?
                                                                                                                • Next Page