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
Is there no way to duplicate an entire workflow or even custom function across multiple departments?
Is there no way to duplicate an entire workflow or even a custom function from one department to other departments, like it is done for field duplication from one department layout to other department layouts?
Automated reply on any new ticket raised by customer
Hi ZohoDesk team, Can we set up an automation so that whenever a new ticket is created against our support email; ZohoDesk immediately sends our standard acknowledgement, including the expected TAT for resolution? If that’s possible, could you share the
Zoho equipment rental - just like Booqable
Hi Zoho Team, is it possible to create a module or a system like booqable? our business starts renting our IT equipment assets that have been recently used for Events and Projects, we are having ZOHO books so its easy to integrate if you create one. Booqable
Profit Margin Scheme
I'm a tourism company operating in the aviation and outbound tourism sectors. Typically, taxes are 0% as our operations are outside the country. However, the state has now imposed a tax on the profit margin. This means if the selling price of an airline
Visibility and Enforcement for Outdated Plug Parameters in Zobot Canvas
Dear Zoho SalesIQ Team, Greetings, We’d like to suggest an important usability and quality improvement for working with Plugs inside Zobot. Current Behavior: When we update the code of an existing Plug, any Zobot card using that Plug requires manual resaving.
Announcement: Zoho DataPrep to Deprecate Password-Only Authentication for Snowflake Connections on July 31, 2025
As part of our ongoing commitment to security and in alignment with Snowflake's pledge to the Cybersecurity and Infrastructure Security Agency (CISA) Secure by Design initiative, Zoho DataPrep will no longer support single-factor password authentication.
The same Contact associated to multiple Companies - Deals
Hi, I would like to know if there is an option to associate the same contact with multiple companies (two or more) deals, using the same contact details for all. This is because we have contacts who are linked to different companies or branches of the
Text on Zoho Sign confirmation dialouge is very small compared to text used everywhere else on Zoho Sign.
I've reported multiple times through Zoho's support email that the text on this notification is very small in contrast to all the other text on the Zoho Sign app. I think it's a bug and it just needs the font size to be increased. It's very minor but
Wise integration in Zoho Books
Hi, it is now time for zoho books to support Wise.com integration for payment links. Wise has launched credit card payments, now about 0.5% cheaper than Stripe. Also their bank payments are much much cheaper than credit cards. Its time for books team
Error Message: None of the rows can be imported
I have been using zoho sheets to download my CSV file for about 2 years now, this month, October 2021, for some reason when I download it to upload to zoho books I get a message saying "None of the rows can be imported". I have been using the same process,
Invalid Element place_of_contact, Invalid Element gst_no, Invalid Element gst_treatment
so this is the body contact_name: orderData.customerName, company_name: orderData.customerName, email: orderData.email, contact_type: 'customer', currency_code: 'INR', gst_treatment: 'business_gst', gst_no: 'i using proper gst no i just removed it from
Not able to item an item to non taxable via api, despite sending is_taxable as false
Hi everyone, I'm trying to update an item via books api and even when sending is_taxable as false, the item still shows Taxable in zoho, I get no errors as well when I update, any help appreciated in this!
Collection & Payment Mapping Automation
We book Sales Invoices and Purchase Invoices against Same Projects. Both Sales Invoices & Purchase Invoices can have one or multiple Projects mentioning the Project ID. We prefer to Make vendor Payments Once we have received The Collections from Clients
Nested Sub-forms (Subform within subform)
Hi Team, Whether there is any possibilities to add sub-form with in another sub-form like Main Form -> Sub form A ->Sub form B If we tried this, only one level of sub form only working. Any one having any idea about this? Thanks Selvamuthukumar R
Restore Trashed Records Anytime Within 30 Days
Access the recycle bin from the Data Administration tab under the settings page in Zoho Projects, which gives better control over the trashed data. When records like projects, phases, task lists, tasks, issues, or project templates are trashed, they are
Avoiding Inventory Duplication When Creating Bills for Previously Added Stock
I had created several items in Zoho Books and manually added their initial stock at the time of item creation. However, I did not record the purchase cost against those items during that process. Now, I would like to create Purchase Orders and convert
Applying EUR Payments to USD Invoices in Zoho Books
Hello, I have a customer to whom I issue invoices in USD. However, this customer makes payments in both EUR and USD. I have already enabled the multi-currency feature in Zoho Books Elite, but I am facing an issue: When the customer makes a payment in
How to prevent users from editing mail merge templates from Zoho crm
We want users to use public mail merge templates. They should not be able to edit templates but only preview data merge and send emails. We did prohibit "manage mail merge template" in the user profile. But they can still edit the template in the zoho
Customer Addresses cannot be edited/deleted in invoices
In the invoices we have an option to change the customer address and add a new address Now I dont know why for some reason if we add an address through this field, the address doesn't appear in the customer module We cannot delete the addresses added
Custom Fields connected to Invoices, Customers, Quotes, CRM
I created the exact same custom fields in Books: Invoices, Customer, Quotes, and in CRM but they don't seem to have a relationship to one another. How do I connect these fields so that the data is mapped across transactions?
Accelerate Github code reviews with Zoho Cliq Platform's link handlers
Code reviews are critical, and they can get buried in conversations or lost when using multiple tools. With the Cliq Platform's link handlers, let's transform shared Github pull request links into interactive, real-time code reviews on channels. Share
Heads up: We're going to update the VAT Summary table's visibility (UK and Germany Editions)
Hello users, Note: This change only applies to organisations using the UK and Germany editions of Zoho Books. Currently, if you've enabled the VAT Summary table in a template, it will be displayed only in PDFs sent to your customers whose default currency
Partial payment invoicing
Greetings I have questions related to payments and retainer invoices: 1. When I want to issue a partial payment invoice, I can't specify the portion to be paid or already paid, then balance to be shown as Due. 2. Retainer invoice is only available as
Inputting VAT Pre-Registration expenses for first VAT Return
Hi Zoho, I've just registered for VAT and am setting up Zoho to handle calculations and VAT return submissions. I'm struggling to figure out how to input the last 4 years worth of expenses into Zoho so that they're calculated in the VAT module. When I
Anyone else experiencing very slow loading of pages in Zoho Projects?
I reported this yesterday only to be told there are no issues but is anyone else experiencing stupidly slow loading of pages. On our loading screen, it is taking often as long as 60 seconds to load a page and just stays on this screen for ages! Other
Zoho Desk Lookup Field Reporting
Thank you for adding the ability to add additional lookup fields for desk tickets. My question is how do you report against these fields? For example: Associating related accounts to the primary desk ticket account, I am not able to add the lookup fields
Integrating asana will cause notification messages to pop up continuously
When I create or edit a task in Asana, the Asana bot keeps updating messages to group chat, which causes the cliq to keep popping up notifications.
Entire notebook that had notes has disappeared
I don't know how tf this happened. All I did was uninstall and reinstall the mobile app after fixing a bug I had. After I reinstalled the app, everything was synced back except for one folder which had a bunch of notes in it. None of those notes are in
My site has disappeared from web builder
www.mproperties.uk My site above is still working. However it has completely disappeared from my Zoho sites' web builder. I am therefore unable to edit my site whatsoever. Please help.
Trying to trigger email notification based on rollup summary field
Hi there, I'm trying to trigger an email notification via Workflow Rules wherever the rollup summary field "Total Shipments" goes from empty to not empty. However this field is not available from the picklist of options in the Workflow rule. Can anyone
zia data enrichment - switch to webamigo Extension
Hello, I have so far used data enrichment via Zia. Now I have installed the Webamigo extension to expand personal data. Unfortunately, nothing has changed after the installation; are there any additional steps needed to switch from the previous method
Export Timeline
With the new Timeline features, it would be really helpful to have the option to export a timeline. When handling customer complaints, having the full breakdown of everything that happens on a module is great but we usually have to send this to another
Interactions Tab in Zoho CRM: A 360° Omnichannel View of Every Customer Touchpoint
Hello Everyone, Hope you are well! We are here today with yet another announcement in our series for the revamped Zoho CRM. Today, we introduce Interactions Tab a new way to view all customer interactions from one place inside your CRM account. Customers
How to resubscribe a contact marked as "Unsubscribed (Marked by Recipient)" without using a form?
Hello, I have a question regarding Zoho Marketing Automation functionality. Is there a way for an administrator to change the subscription status of a contact marked as "Unsubscribed (Marked by Recipient)" back to "Subscribed" without using a form? Ideally,
Linkedin: when Zoho Social is going serious with it?
Hi, it's been said in the past that Linkedin related features in Zoho Social were well behind those of other social networks because of limitations imposed by the platform. Now that we see around my tools (take taplio.com) frankly outpacing ZSocial on
5名限定 課題解決型ワークショップイベント Zoho ワークアウト開催のお知らせ(7/24)
ユーザーの皆さま、こんにちは。Zoho ユーザーコミュニティチームの藤澤です。 7月開催のZoho ワークアウトについてお知らせします。 2ヶ月ぶりに、渋谷にて「リアル開催」します! ▷▷詳細はこちら:https://www.zohomeetups.com/20250724Zoho ━━━━━━━━━━━━━━━━━━━━━━━━ Zoho ワークアウトとは? Zoho ユーザー同士で交流しながら、サービスに関する疑問や不明点の解消を目的とした「Zoho ワークアウト」を開催します。 Zoho サービスで完了させたい設定やカスタマイズ、環境の整備など……各自で決めた目標達成に向け、
How to get fields centered in a form?
Is it possible to center fields in a form? Some of my forms do some don't and it is really not aestheticly pleasing? Any help would be greatly appricated. Thanks, Michael McNeill
Make Packages from multiple sales order of a single customer
Our customers sends orders to us very frequently, some times what customer wants is to ship items from 5 to 6 sales orders in a single shipment. it will be very nice if, zoho can implement this function, in which we can select items from other sales orders of the customer.
Webhooks and Integration
Hey, I was looking to create automation using webhooks or something equivalent of a trigger based mechanism, to connect it as an integration. But I don't find any relevant APIs to setup these webhooks/notifcations for the "Zoho Books". Can anyone please
Zoho Books X Zoho Expense
Hello there, Please can you tell me if it is possible to sync from Books to Expense? I much prefer the Expense reports to that of Books and the Credit Card feeds work via expense and not Books for me. However I find books is much better to deal with the
Next Page