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.
For more topics on Kaizen, please refer to our
Kaizen collection here.
Recent Topics
Super Admin Logging in as another User
How can a Super Admin login as another user. For example, I have a sales rep that is having issues with their Accounts and I want to view their Zoho Account with out having to do a GTM and sharing screens. Moderation Update (8th Aug 2025): We are working
What matters more in Zoho implementations: tools or system architecture?
I recently worked on a full-stack migration for a catering equipment business using Zoho One with Shopify, and it raised a few interesting observations. The setup included migrating a large product catalog (around 9,700+ SKUs), integrating multiple supplier
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,
[Webinar] Solving business challenges: One tool for documents, forms, PDFs, e-signatures, and more
Hi Zoho Writer users, Most businesses rely on multiple tools, such as a word processor, form builder, e-signature provider, and PDF editor, for their document workflows. Managing multiple subscriptions, switching between tools, and moving data across
Deposit on invoice
I'm trying to figure out how to customize an Estimate to include a Deposit/Retainer Invoice line within the Estimate. I tried creating my own custom field called "Deposit" where I manually inputted the deposit amount, which was nice. However, my employer
Zoho NOTEBOOK: What are file size restrictions?
I understand that Zoho NOTEBOOK is a free product, and what it offers is great. But I'm wondering what the file size restrictions are. When I record an audio note in Zoho Notebook, what is the maximum length of recording time/audio file size? When I wish to upload MP4 video, what is the maximum video size I can upload per Zoho Notebook restriction? Moreover, does Zoho Notebook use its own storage structure, or can I upgrade my storage for Zoho Notebook to add larger file attachments, videos and audio
Concern Regarding Stock Validation in Inventory Management
Hi Zoho Team, We would like to highlight a concern regarding stock validation in the inventory system. As per standard inventory management practices, if the stock level is zero, the system should not allow users to create a shipment, packing slip, or
Automation Series #2: SLA vs Supervisor Rule in Zoho Desk
SLA vs Supervisor Rule: Keeping tickets on track in Zoho Desk This post is part of the "Desk Automation Series," Chapter 1. Through this series, we will help you choose the right automation type in Zoho Desk by comparing commonly confused automations
Zoho Recruit - Email Relay
Good day, Has anyone succeeded in setting up an email relay for Office 365? If I add the details from https://support.microsoft.com/en-us/office/pop-imap-and-smtp-settings-8361e398-8af4-4e97-b147-6c6c4ac95353, I get the connection error. Regards, Eka
Better use of contacts
Zoho inventory has the ability to add multiple contacts to customers. However Zoho inventory doesn't currently provide a way to link a contact to objects like sales orders. This means that while you can tell what company has placed a sales order you can't
Notebook AI limits
Hi folks, Working with the AI transcription tools in Notebook, on the Mac App, which I find quite handy, but the one thing I am struggling with is the inability to either edit or copy the results of the transcript: I can't click in any of the boxes, and
Disappointment with Zoho Payments
Dear Gowdhaman, I am writing to inform you that I am removing Zoho Payments from my website. I cannot continue to disappoint my customers due to the lack of UPI support, as has been the case with my experience so far. Please note that the 0.5% transaction
Zoho Commerce B2B
Hello, I have signed up for a Zoho Commerce B2B product demo but it's not clear to me how the B2B experience would look for my customers, in a couple of ways. 1) Some of my customers are on terms and some pay upfront with credit card. How do I hide/show
Rename system-defined labels in Zoho CRM
Renaming system-defined labels is now available across all DCs. Hello everyone, Zoho CRM includes predefined system fields across modules to support essential CRM operations. Until now, the labels of these fields were fixed and could not be edited from
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
Separate Items & Services
Hi, please separate items and services into different categories. Thank you
Log a call: Call Duration for Inbound is mandatory but inbound is optional
Hi Team Can you advise on why the call duration for the inbound call type is a mandatory field? We have a use case where we are manually logging a call but do not use the call duration field. The field does not have the option to make it non mandatory
Zoho Sign 2025–2026: What's new and what's next
Hello! Every year at Zoho Sign, we work hard to make document signing and agreement execution easy for all users. This year we sat down with our head of product, Mr. Subramanian Thayumanasamy, to discuss what we delivered in 2025 and our goals for 2026.
New Account, Setting up Domain Question
Hello, I recently set up a new account with a custom domain. But after paying and setting up my account, it says OpenSRS actually owns the domain, and I have to sign up with them to host my site. But OpenSRS wants to charge me $95, which is ridiculous.
【開催報告】東京 Zoho ユーザー交流会 NEXUS vol.1 ~ データドリブン経営・少人数組織のCRM活用・AIエージェントの最前線 ~
ユーザーの皆さん、こんにちは。 コミュニティグループの中野です。 2026年3月27日(金)、東京・新橋にて「東京 Zoho ユーザー交流会 NEXUS vol.1」が開催されました。 今回は「マーケティング領域のZoho 活用法 × AI」をテーマに、ユーザーさん2名による事例セッション、Zoho 社員によるAIセッションなどを実施しました。 ご参加くださったユーザーの皆さま、ありがとうございました! この投稿では、当日のセッションの様子や使用した資料を紹介しています。残念ながら当日お越しいただけなかった方も、ぜひチェックしてみてください。
Monthly Webinar : Getting Started with Zoho LandingPage
Our monthly Getting Started with Zoho LandingPage webinar is back! If you're building your first page and want a little guidance, this is where to start. Learn how landing pages fit into your strategy, generate leads, and improve conversions. Here’s what
Mass emails - Allow preview of which emails will receive the email based on the criteria
Feature request. Please allow us to view and confirm the exact recipients of the mass emails based on the criteria we've chosen before sending. It can be quite sensitive if you send the mass email to some wrong accounts accidently, so it would be great
Limitation in Dynamic Constant Sum Based on Previous Question Selections in Zoho Survey
Zoho Survey supports the Constant Sum question type, allowing respondents to distribute a fixed total (such as 100) across a set of options. However, it does not support dynamically populating these options based on selections made in a previous question.
SAP Business One(B1) integration is now live in Zoho Flow
We’re excited to share that SAP Business One (B1) is now available in Zoho Flow! This means you can now build workflows that connect SAP B1 with other apps and automate routine processes without relying on custom code. Note: SAP Business One integration
sync two zoho crm
Hello everyone. Is it possible to sync 2 zoho crm? what would be the easiest way? I am thinking of Flow. I have a Custom Module that I would like to share with my client. We both use zoho crm. Regards.
CRM Client Script Buttons
Hello, Client Script ZDK list button functions, but I am not sure how to interact with them. I tried a few methods of getting the API name for a custom button, but no luck. Any ideas where the button API names are stored? Also, custom buttons must be
Import MSG to Yandex Mail Account | Fast & Reliable Solution
If you are facing problem to import MSG files to Yandex Mail account can be challenging if done manually, especially when handling multiple files. A reliable solution is using the MacGater Mac MSG Converter, which simplifies the entire process with accuracy
Copy all reports in a folder
I currently have a database that I need to create multiple charts filtered by market. All of the charts are identical, I just change to of the filters and then I have the next market's set of charts. The only way I've been able to copy charts (reports)
OpenURL working Intermittently
Never had this issue before, everything was working fine up to a few days ago. We have a buttons on reports to open forms with pre-filled fields. Now, there are instances where it will throw and error and gives no feedback. What is really strange is not
Zoho Recruit mailserver get blocked by Microsoft!
Hi, We have experienced this issue twice now, where Zoho Recruit outbound IP addresses are being blocked by Microsoft. We are confident that Microsoft is the blocking party, as all outbound emails to candidates with @hotmail.com, @live.com, and @outlook.com
Calculate Hours Minutes Sec in Zoho Creator Using Deluge
check_In = "8-Aug-2023 10:00:00".toDateTime().toLong(); checkout = "8-Aug-2023 18:00:00".toDateTime().toLong(); //difference = start.timeBetween(end); check_In = "8-Aug-2023 17:56:50".toDateTime().toLong(); checkout = "8-Aug-2023 18:00:00".toDateTime().toLong();
Build Smarter Apps with AI in Zoho Creator
Build Smarter Apps with AI in Zoho Creator This is truly the era of AI, and businesses that adapt now will lead tomorrow. Zoho is already moving ahead in this direction, continuously evolving its platform with powerful AI capabilities. With Zoho Creator,
Zia Dashboard Insights : turn your dashboard into decisions
When you look at a chart or KPI in a dashboard, you would possibly see something like: Revenue: $2.4M ↓ 18% vs last month. It can be a positive growth or a negative one, or a dip in revenue, a spike in deals, a slowdown in renewals—all you usually see
Tickets without registration
Hi, would it be possible to give customers the opportunity to be able to read their tickets without registration?
Zoho Desk Answer Bot vs. Zia Agents – Knowledge Base & Ticket Access
Hi everyone, I’m currently evaluating AI options in Zoho Desk and ran into some limitations with the Answer Bot: Answer Bot limitations Only uses Knowledge Base articles No access to tickets Limited control over sources: Either one Help Center or all
Como estruturar automações eficientes no Zoho Creator
Como estruturar automações eficientes no Zoho Creator Introdução No contexto de aplicações empresariais, automação não é apenas uma conveniência, é um fator crítico para ganho de produtividade, redução de erros e escalabilidade operacional. O Zoho Creator
Changing the status of a work-order
Is there a way to change the status of a work-order?
Online Payment Fees
We don't take many online credit card payments so the merchant service provider (PayPal) charges us the 2.9% fee for processing the amount. I would like the ability for the fee to be automatically added to the total amount for "ease of payment". We'd
What is a realistic turnaround time for account review for ZeptoMail?
On signing up it said 2-3 business days. I am on business-day 6 and have had zero contact of any kind. No follow-up questions, no approval or decline. Attempts to "leave a message" or use the "Contact Us" form have just vanished without a trace. It still
Zia Agents in Zoho CRM: a better way to set up digital employees
Hello everyone, If you've been using Zia Agents in Zoho CRM, so far using Connections was the only deployment method you're familiar with. You create an agent in Zia Agents (define its objective, write instructions, use tools, add knowledge base) and
Next Page