Hello everyone!
Welcome to Kaizen! In this post, we will discuss Record Locking Configuration APIs in Zoho CRM.
What is Record Locking?
Record Locking refers to the restrictions that you can apply to records of a module to prevent further changes to the data. You can either lock records manually or set conditions to lock them automatically.
You can add record locking configuration to a module through the module builder. Go to Setup > Customization > Modules and Fields > {Module} > Record Locking Configuration. Record Locking is supported for Leads, Accounts, Contacts, Deals, Tasks, Cases, Solutions, Vendors, Price Books, Quotes, Sales Orders, Purchase Orders, Invoices and Custom modules.
Record Locking Configuration in UIThese options are available in record locking configuration:
- You can lock all profile records or give exception to some profiles.
- You can lock the activities you choose. The Edit option is limited by default. You can also limit delete action, adding tags, changing owner, sending emails or using custom buttons.
- You can have the option of editing certain fields even when the record is locked.
Automatic record locking
Automatic record locking refers to the locking of records based on certain conditions. For instance, consider that a deal with a seller is in the closed won stage, and you want to prevent further changes to the deal record. You can achieve this using the record locking feature.
You can configure record locking for deals module to automatically lock a record when it reaches the closed won stage. You can specify rules for locking records. There can be up to five rules per module.
Manual Record Locking
Manual record locking is the intentional locking of a record by a user. To do this, the user's profile should have adequate permission. Profile permissions can be set in Setup > Users and Control > Security Control> Profiles > {Profile Name} > Module Permissions > Tools > Lock.
Record Locking Configuration APIs
Record locking configuration APIs allows you to set up the configuration needed to lock the records in modules manually or automatically via APIs.
The fields in Record Locking Configuration APIs are:
Name | Date Type | Description |
locked_for | String | Represents whether records are locked for all profiles or some profiles. Possible value : all_profiles_except_excluded_profile or all_profiles |
lock_excluded_profiles | String | Represents the profiles that are restricted from locking when locked_for value is all_profiles_except_excluded_profile |
excluded_fields | JSON Array | Represents the fields that are excluded from record locking |
feature_type | String | Represents feature type, its value is record_locking for this case |
locking_rules | JSON Array | Represents the details of rules added to lock the records in the module automatically. This array includes the name, id and criteria of locking rules. The field lock_existing_records indicates whether the existing record must be locked or not. |
restricted_actions | JSON Array | Specifies the actions that are restricted for locked records. Possible values: update, delete, tags, change_owner |
lock_for_portal_users | Boolean | Indicates whether locked records are restricted for portal users. |
restricted_communications | JSON Array | Specifies types of communication that are restricted for locked records. Possible value: send_mail |
system_defined | Boolean | Indicates whether the record configurations are system defined. |
lock_type | String | Represents the type of the record locking configuration - manual, automatic, both |
restricted_custom_buttons | JSON Array | Represents the name and id of custom buttons that are restricted for locked records. |
Using this API, you can configure record locking for the supported modules.
Request URL:
{api-domain}/crm/{version}/settings/record_locking_configurations?module={module_API_name}
HTTP Method: POST
Let us consider the case of locking a deal automatically when it is in the closed won stage.
Request URL to configure record locking for deals module:
{api-domain}/crm/v5/settings/record_locking_configurations?module=Deals
The below request body locks the records from editing for all profiles when the Deal Stage is Closed Won (lockings_rules). The key lock_existing_records specify whether the rule should be applied for existing records. The record is locked for all profiles (locked_for) and the only field that is excluded from locking is the description field (excluded_fields). The record will be locked for portal users (lock_for_portal_users). Edit action is restricted for the lock record (restricted_actions).
Request body:
{ "record_locking_configurations": [ { "locked_for": "all_profiles", "excluded_fields": [ { "api_name": "Description" } ], "feature_type": "record_locking", "locking_rules": [ { "name": "Closed Won", "lock_existing_records": true, "criteria": { "comparator": "equal", "field": { "api_name": "Stage" }, "value": "Closed Won" } } ], "restricted_actions": [ "update" ], "lock_for_portal_users": true, "restricted_communications": null, "system_defined": false, "lock_type": "automatic", "restricted_custom_buttons": null, "lock_excluded_profiles": null } ] } |
From the response of this API you will get the id of the record locking configuration.
The criteria JSON object inside the locking_rules JSON array consists of the comparator, field and value of the fields that form the locking rule of the configuration. If you want to give multiple conditions in one locking rule, you can use group_operator and group keys. The possible values for group_operator are AND, OR. For example, consider that you want to add a locking rule for Closed Lost deals which includes deals with Stage Closed Lost and Closed - Lost to Competition. This can be achieved by giving the locking_rules as shown below:
. . "locking_rules": [ { "name": "Closed Lost", "lock_existing_records": true, "criteria": { "group_operator": "OR", "group": [ { "comparator": "equal", "field": { "api_name": "Stage" }, "value": "Closed Lost" }, { "comparator": "equal", "field": { "api_name": "Stage" }, "value": "Closed-Lost to Competition" } ] } } ] . . |
Use this API to retrieve the details of record locking configuration for a particular module.
Request URL:
{api-domain}/crm/{version}/settings/record_locking_configurations?module={module_API_name}
HTTP Method: GET
Request URL to retrieve the record locking configuration for deals module:
{api-domain}/crm/v5/settings/record_locking_configurations?module=Deals
{ "record_locking_configurations": [ { "created_time": "2023-10-23T03:25:06-04:00", "locked_for": "all_profiles", "excluded_fields": [ { "api_name": "Description", "id": "5843104000000002587" } ], "created_by": { "name": "Patricia Boyle", "id": "5843104000000424672" }, "feature_type": "record_locking", "locking_rules": [ { "name": "Closed Won", "id": "5843104000001068052",//Locking rule ID "lock_existing_records": true, "criteria": { "comparator": "equal", "field": { "api_name": "Stage", "id": "5843104000000002565"// ID of Stage in fields API }, "value": "Closed Won" } } ], "restricted_actions": [ "update" ], "lock_for_portal_users": true, "modified_time": "2023-10-23T03:42:00-04:00", "restricted_communications": null, "system_defined": false, "modified_by": { "name": "John Smith", "id": "5843104000000424001" }, "id": "5843104000001068044", "lock_type": "automatic", "restricted_custom_buttons": null, "lock_excluded_profiles": null } ] } |
Consider that you want to edit the above record locking configuration in deals module. You want to enable manual locking and also add a new rule to lock deals in stage closed lost. This can be done using the Update Record Locking Configuration API.
Request URL:
{api-domain}/crm/{version}/settings/record_locking_configurations?module={module_API_name}
OR
{api-domain}/crm/{version}/settings/record_locking_configurations/{record_locking_config_id}?module={module_API_name}
HTTP Method: PUT
Note that you should mention the ID of the record locking configuration inside the request body if you are using the endpoint that does not have the ID.
When you specify a valid locking rule ID (obtained from Get Record Locking Configuration API) in the input body, the corresponding locking rule will be updated. When ID is not mentioned it will be considered as a new rule.
In addition to adding or modifying existing locking rules in a specific record locking configuration, you can also delete locking rules using Update Record Locking API. When "_delete" key with value true is given in the input body, the locking rule will be deleted.
Example for deleting a record locking rule using update record locking configuration API
Request URL: {api-domain}/crm/v5/settings/record_locking_configurations?module=Deals
HTTP Method: PUT
{ "record_locking_configurations": [ { "locking_rules": [ { "id": 5843104000001068052,//ID of record locking rule "_delete": true } ], "id": "5843104000001068044"//ID of the record locking configuration } ] } |
You can use this API to delete Record Locking Configuration for a module. Please note that deleting the record locking configuration of a module unlocks all the locked records of that module.
Request URL:
{api-domain}/crm/{version}/settings/record_locking_configurations/{record_locking_config_id}?module={module_API_name}
HTTP Method:DELETE
Request URL to delete the record locking configuration for deals module:
{api-domain}/crm/v5/settings/record_locking_configurations?module=Deals
We hope you found this post on the Record Locking Configuration APIs useful. In next week's Kaizen we will cover Record Locking APIs that enable users to access locking details for locked records, to lock/unlock manually, and to edit the locked reason for manually locked records.
If you have any questions, write to us at support@zohocrm.com or let us know in the comment section. For more such posts that are part of our Kaizen series, please refer to our Kaizen collection here.
Cheers!
Recent Topics
Collections Management: #6 Realign Customers who gets back In-Term
Arun stared at the subscription list on his dashboard. Another account had just been moved to Cancelled status after completing the whole dunning process. Nothing unusual, just that payment failures happen, retries fail, and cancellation is the expected
Zoho Mail IP Blacklist
I need problems with send mails: Error: junk mail rejected - sender4-op-o10.zoho.com 136.143.188.10, is in RBL. Spamcop. Please remove FQDN for blacklist. Regards.
I can receive but not send emails
Hello, I've been not able to send emails for almost a year now. I been using alternate email to do this. I want to know how to fix this so I can use my zoho account normally again.
Setting checkbox value on template in Sign from Creator
Good day, Please help me understand how do I set a tick from a checkbox in Creator into a checkbox on a Sign template. Below is the only values on the Sign template and the code from Creator, "field_boolean_data": {}, "field_date_data": {}, "field_radio_data":
The challenge of 24/7 connectivity: Being present and meeting customer expectations
Before television entered our homes, radio was our window to the world. We had to tune carefully to catch voices from distant places. When television arrived, the world began to grow smaller. We can watch rocket launches, see the goal that wins our favorite
How to download all attachments from inbox, send, other folders in one go
Hi All, Appreciate if anyone could help me with steps for below requirement. How to download all attachments from inbox, send, other folders in one go. Even mapping to new folder will help me. Thanks in advance.
Recruit paid support?
Hi all, Could anyone who has paid support package advise if it provides value for money with regards to support response times? Exploring the idea as unfortunately when we have faced issues with Recruit it has been a 7+ day timescale from reporting to
Cannot connect mail accounts to Thunderbird
Hi Support - I'm attempting to add my mail accounts to Thunderbird but I'm getting an unable to login to server error. I tried to use the password associated with my account I received the unable to login error. So I went into Zoho Accounts and generate
Alias Email Id already exists
Hi, I just verified my domain sesque (dot) com and now I am trying to create the admin account using admin (at) sesque (dot) com, but I am getting an error saying "Alias Email Id already exists". I used to have another Zoho account with this email address,
Unable to connect to smtp server, connection timed out
Hi Team, I am facing below issue, while sending out emails from thunderbird client. It used to work, facing this issue from morning. Error: Sending of the message failed. The message could not be sent because the connection to Outgoing server (SMTP) smtp.zoho.com
javax.mail.authenticationfailedexception 535 authentication failed
Hi, I am facing 535 authentication failed error when trying to send email from zoho desktop as well as in webmail. Can you suggest to fix this issue,. Regards, Rekha
Issue with Creator's IF logic
Hi, I found the following code produces unexpected results: if(-1.0 < 0.0000000) { info "True"; } else { info "False"; } if(-1.0 < 0.000000) { info "True"; } else { info "False"; } The output returned is: False True However, the
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.
Client Portal ZOHO ONE
Dear Zoho one is fantastic option for companies but it seems to me that it is still an aggregation of aps let me explain I have zoho books with client portal so client access their invoice then I have zoho project with client portal so they can access their project but not their invoice without another URL another LOGIN Are you planning in creating a beautiful UI portal for client so we can control access to client in one location to multiple aps at least unify project and invoice aps that would
Zoho Creator customer portal users
Hi, I'm in a Zoho One subscription with our company. I'm running a project now that involves creating a Zoho Creater application and using the Zoho Creator Customer Portal. At most we need 25 customer portal users. In our Zoho One plan we only get 3
DKIM Verification Failed (Namecheap)
Hi! I have already set up the TXT records in Namecheap but I keep getting the "Verification Failed" pop up. Was wondering if I'm the only one who has this problem and can anyone help me with this? Thanks!
Emails stuck in Queue
Hi there, Since yesterday I have a few out going emails stuck in a queue. It say it will auto retry sending however nothing is happening. It seems to be affecting roughly 50% of my outgoing emails. Please help Thanks
Soft Bounce from transational emails from BREVO (Sendinblue)
I manage the website of a client who uses your EMAIL service for the domain floranativadobrasil.com. And I use the BREVO email service, previously called SendinBlue, to send transactional emails about events specific to the website. All emails sent to
Ability to Edit YouTube Video Title, Description & Thumbnail After Publishing
Hi Zoho Social Team, How are you? We would like to request an enhancement to Zoho Social that enables users to edit YouTube video details after the video has already been published. Your team confirmed that while Zoho Social currently allows editing the
Introducing Multi-Asset Support in Work Orders, Estimates, and Service Appointments
We’re excited to announce a highly requested enhancement in Zoho FSM — you can now associate multiple assets with Work Orders, Estimates, and Service Appointments. This update brings more clarity, flexibility, and control to your field service operations,
Getting an error Address not found Your message wasn't delivered
Hey, I'm trying to configure zoho mail for my website https://businessentity.org/ The email is meredith.karter@businessentity.org I'm able to successfully send the mails but when someone sends an email to above mail, this error shoots up: Address not
Support Uploading YouTube Videos Longer Than 60 Minutes
Hi Zoho Social Team, How are you? We would like to request support for uploading YouTube videos longer than 60 minutes directly through Zoho Social. Your support team informed us that Zoho Social currently cannot upload videos over 60 minutes due to “API
Need Faster Help? Try Live Chat Support
Hello there, We understand that sometimes, whether you’re facing an issue, exploring a feature, or need quick clarification, sending an email and waiting for a response just doesn’t cut it. You need answers, and you need them now. That’s exactly why we
Can't deactivate Spell Check
Hi Community, right now I'm using the Zoho Mail Desktop-Software. So far, so good.. many possibilities. Overall very nice. What is extremely annoying right now, is that we are not able to deactivate the Spell Check feature. And we are barely able to focus
Zoho Toolkit Email Signature Generator
I'm having real issues with the email signature generator with no matter where I host the photo, Zoho doesn't seem to show the photo on the link provided?
Company Policy Upload - Request All EE to review and sign
How can I upload policies into Zoho People and have the employees review them and sign off saying they agree, etc.? Also, if I make a revision to a policy, I would like that changed or updated policy to be distributed or have the employees notified that
Zoho Sign Global Settings vs. Template and Document
Hello, We are running into an issue on a current use case. We already use Zoho Sign. Now that KBA is available, we want to begin using it in our tax delivery process, by allowing clients to sign electronically, but also download a copy of their return
Zoho Mail Desktop Crashes on Linux - Ubuntu 24 LTS
Hi, I have been trying to run the desktop app on Ubuntu for the past few day with no luck. I have tried both the .deb package and the appImage. When I attempt to open the app. It just crashes immediately. The crash error dialog appeared once and I cant
Can't login to Zoho mail
I'm logged into Zoho but when I try to go in zoho mail I get: Invalid request! The input passed is invalid or the URL is invoked without valid parameters. Please check your input and try again. I just set up my mx records and stuff with namecheap a few
Zoho IP blocked by SpamCop
Hi, Many of my emails are blocked and I receive this: INVALID_ADDRESS, ERROR_CODE :550, ERROR_CODE :spamcop.mimecast.org Blocked - see https://www.spamcop.net/bl.shtml?136.143.188.51. - https://community.mimecast.com/docs/DOC-1369#550 [DGwIYPPSOfWI
Can I execute two 'functions' when completing a mail merge from CRM?
Hi, I have set up a mail merge from CRM Deals to a template. I want a copy of this to be saved in Workdrive, and then a copy also saved back into the deal record from which the merge occurred. I can do both independent of each other, and managed to get
Differences between Zoho Books and Zoho Billing
Without a long drawn out process to compare these. If you were looking at these Books and Billing, what made you opt for one and not the other. Thanks
Auto-sync field of lookup value
This feature has been requested many times in the discussion Field of Lookup Announcement and this post aims to track it separately. At the moment the value of a 'field of lookup' is a snapshot but once the parent lookup field is updated the values diverge.
Custom validation in CRM schema
Validation rules in CRM layouts work nicely, good docs by @Kiran Karthik P https://help.zoho.com/portal/en/kb/crm/customize-crm-account/validation-rules/articles/create-validation-rules I'd prefer validating data input 'closer to the schema'
No Ability to Rename Record Template PDFs in SendMail Task
As highlighted previously in this post, we still have to deal with the limitation of not being able to rename a record template when sent as a PDF using the SendMail Task. This creates unnecessary complexity for what should be a simple operation, and
Server error when trying to Data > Sort > Custom Sort
Been using Data > Sort > Custom Sort for a while, now it has suddenly stopped working. When selecting the same data range and trying to execute, I get "Sorry! There was a problem saving your last edit. Please try again."
To Assign a genrated pdf to a file upload field using delug
content = "<html><body>HTML Content on page One <div style='page-break-after:always'></div> HTML Content on page Two </body></html>"; file = zoho.file.convertToPDF(content); file.setFileName("Name of the file"); <variableName> = <FormLinkName>[ID == input.ID];
TArgets To Accounts (Modules)
How can i set sale target to Customers (Accounts Module)
Breaking barriers with multilingual WhatsApp templates in IM
Ever wondered what it feels like to be greeted in your own language by a brand you love? A “Welcome!” feels nice, but a “¡Bienvenido!” or “स्वागत है!” feels personal. In today’s global world, conversations often need to cross both time zones and cross
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
Next Page