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
Multiple images, one record
I have a form that is used to capture the following info: -Facility Name -Origin -Shipment # -Picture of Damaged Pallet (Image field) I want to be able to capture multiple pictures without having to create a new record, as there might be multiple damaged pallets on the shipment. Obviously, one never knows how many damaged pallets might be on a shipment so I'd prefer not to create 20 image fields and have most of them unused. I'd prefer that they have an option to add another image only if they need
how to dynamically upload multiple images for single record?
Is the use of dynamic multiple images in a single record supported? I've searched but have not found the answer. If it is supported, how is it done? I saw 1 suggestion to add a sub-form but that doesn't seem to be the answer. I don't want to add a set number of image fields. Each record would have a different number of images. I want the addition of images to be dynamic. thanks
Multi-upload field
Hi I need to include a file upload field that allows the user to select multiple files and upload all at once. I hope I can do this with HTML, I'm new to merging HTML and deluge... Can I trigger a hidden file upload window to appear On User Input of a field in an embedded form? Thanks! Levi
is it possible to add multiple attachments to a record?
Hello, I'm trying to add functionality so that a record can have several associated attachments. I obviously added a File Upload field to my form, but that appears to only allow one total. Is there a way around this? Thanks, - Kevin
multiple upload files in zoho form
Hi, I need upload multiple files in a single upload field thkns
Keeping Track of Email Threads
Hi, Z CRM is great for tracking all the activities one would want to track whilst qualifying leads, converting to customers, closing deals etc etc, however.... ....although I can use Z CRM to send an email to a lead/contact and have that recorded as an activity for other team members to see, there is no way of capturing an inbound email from that lead. Assume my lead replies to my email sent from ZCRM, in my case, the response arrives in my ZMail account. However I can't get it back into ZCRM to
Zoho Creator invokeUrl to retreive PDF
I'm trying to retreive a record PDF to send to Print Node. Tried with and without the zoho_creator_connection. pdf_content = invokeurl [ url :"https://creatorapp.zoho.com.au/<org_namespace>/<app_link_name>/record-pdf/<report_link_name>/" + input.ID type
Bulk upload image option in Zoho Commerce
I dont know if I am not looking into it properly but is there no option to bulk upload images along with the products? Like after you upload the products, I will have to upload images one by one again? Can someone help me out here? And what should I enter
Zoho App Builder
I’m looking for a Zoho Creator developer to build a simple app for tracking site expenses for a construction company. Key features: mobile form, dropdowns for projects and expense types, photo attachment for invoices, auto-calculated totals, and Excel
Captcha can't be enabled conditionally
Hi Problem: captcha on a form can't be enabled conditionally. Why is this a problem: Because I use the same form on our website (public) in the portal and mobile app. In the portal it works but in the mobile app it doesn't. So there should be a way to
ACH Returns Don’t Trigger Dunning or Reverse Payment in Zoho Subscriptions
Zoho Billing marked an ACH payment as successful and kept the subscription active — even though the payment was later returned by the bank (NSF). There was no update to the invoice or subscription status, and I had to manually clean it all up. For credit
Zoho Sheet - Split cell diagonally fill half color
is it possible to split a cell diagonally, fill different text in each half and ideally color them differently as well?
Calling Token API in Postman returning "error: invalid_client"
Hello, I've been working on setting up an API to get data from zoho crm into a third-party application. I'm currently testing the setup in Postman, but I'm getting an error from the API to retrieve the access token. It keeps returning "error: invalid_client".
How to handle this process need using a Blueprint?
See one minute screen recording: https://workdrive.zohoexternal.com/external/eb743d2f4cde414c715224fc557aaefeb84f12268f7f3859a7de821bcc4fbe15
bulk scheduling youtube shorts and facebook reels
how do i flag the video as facebook reel rather than normal video, it's vertical, 20 seconds, yet still being posted as video on facebook for youtube, it's being rejected out right both videos are to standard, can be posted normally with normal scheduler
Invitation-Based User Access in Zoho Analytics
Hello everyone, We’re rolling out an important update on how users are added to your Zoho Analytics Organization and Workspaces. Previously, when admins added users, they were automatically added to the organization. Moving forward, to improve security
Filtert products by multi select custom field
Hello, this is seems like a must addition, why it can not be done now?
Multiple images
Hi Is there a way to insert multiple images in one image record or any way that instead of one image, I could upload 5 to 10 images together. Looking forward for a solution. Regards
Zoho Projects - Custom Objects
Hello, is there the ability now, or in the near future, to add custom objects to Zoho Projects? The requirement here would be to have the ability to track change requests to a project's budget. The idea here is to have the ability to create a custom Object
Access CRM Variables from Formula field
Is it possible to use a CRM variable (defined in Developer Space -> CRM Variables) in a formula field for calculations ?
Announcing Bigin India Meetups Across 8 Cities: July 29 - Aug 07
Hello Biginners, We've got some exciting news to share! We're hosting our first round of Customer Meetups for 2025 in India, from 29th July - 9th August. Whether you're a Bigin newbie or a seasoned pro, this is your chance to meet customers from your
Why isn't there an Expense description field / column?
Hello! I'm new to Zoho Books and accounting. I'm surprised there isn't a proper expense description field (and column in the overview "all expenses" page)? I thought this was a given in accounting, as visualizing expenses facilitates tracking them down?
New in Zoho PDF Editor: Watermarks, password protection, signature collection, and more.
Hi Zoho Sign users! We are delighted to introduce the latest enhancements to Zoho PDF Editor, designed based on user feedback and feature requests. This update enables you to reorder, extract, and rotate PDF pages, add watermarks, and collect signatures.
Cant't update custom field when custom field is external lookup in Zoho Books
Hello I use that : po = zoho.books.updateRecord("purchaseorders",XXXX,purchaseorder_id,updateCustomFieldseMap,"el_books_connection"); c_f_Map2 = Map(); c_f_Map2.put("label","EL ORDER ID"); c_f_Map2.put("value",el_order_id); c_f_List.add(c_f_Map2); updateCustomFieldseMap
Printed Reports, Increase Font SIZE
I need to send some printed copies of financial reports to my attorney. The reports print out with microscopic fonts. How do I increase the font size so that a normal human can read the text? Every other accounting app can do this so I imagine I have
Avoid email sending!
Hello, Thanks you Zoho for the wonderful apps you provide. Question: Is there a way to disable sending emails when: - creating an estimate or billing. Thanks Tommy
Need to show discount before total after subtotal
Need to show discount before total after subtotal on my estimate template (see attachment)
Email a "thank you" note for this payment is NOW checked by default
Hello Team, Just noticed that Email a "thank you" note for this payment is now checked by default. I tried searching in Preferences and there is no way to turn this off. I do not want this to be the default. Is there a way to turn this off?
End-to-end services hours
We are trying to determine the best method of quoting service hours on quotes but only present the sum amount to a customer, without losing the tracking of quantity of hours for invoicing purposes. Does anyone have a good method they have determined?
Specific Approval Question
Hi everyone, Just a quick question here. I have located the "Approval Type" in the preferences, which is great, and I am sure we could make use of it. However, I am trying to understand how I can implement an approval "workflow". The business call it
Zoho Books - Show Discount Totals When Greater Than Zero
Hi Books Team, I understand that to show or hide discount amount on a Quote or Invoice, I need to use different templates. It would be a great quality of life improvement for users if we had an option to show or hide the discount amount at line item and
Specifying a filename for Schedule Reports
Is it possible to specify a filename to use with scheduled reports? For example: With a general ledger report, instead of general_ledger.pdf I would like to include the date the report was generated in the filename so it is called general_ledger_202
Need to upsert "Created Time" field in Leads Module
I am in the process of implementing Zoho CRM for my business. I need to modify the "Created By' field to reflect the actual date/time the lead was captured in my original Excel file. Otherwise, my conversion velocity data will always be inaccurate, which
HTML for confirmation email
Hi, After a prospect submitted the Zoho form, we want to send a confirmation mail. In this mail we want to add our email signature. However, while this is possible in Zoho CRM this doesn't seem to be an option in Zoho Forms. Also an html editor is not
Fire a webhook when the user gets access to portal
Hello, We would like to know if there is any way in which we can automate a webhook call if the user accepts the portal invitation that Zoho sends by email. The customer module does have the option to trigger webhooks when a customer is created, updated,
Enable History Tracking for Picklist Values Not Available
When I create a custom picklist field in Deals, the "Enable History Tracking for Picklist Values" option is not available in the Edit Properties area of the picklist. When I create a picklist in any other Module, that option is available. Is there a specific reason why this isn't available for fields in the Deals Module?
Creating Payrun summary by fetching values from the employee payruns and adding them
I am trying to make a processing payrun module. I want on Form load to autofill payrun summary eg Total Deductions, Total employer contributions etc by fetching one value after the other in the employee payrun information. So it should loop through the
Feature Request - Zoho Books - Add Retainer Invoices to CRM/Books integration
Hi Books Team, My feature request is to include Retainer Invoices in the finance suite integration with Zoho CRM. This way we will be able to see if retainer invoices have been issued and paid. I have also noticed that when the generate retainer invoice
Books <-> CRM synchronisation with custom Fields
Hello, We are synchronising Books Customers with CRM Accounts. In CRM Accounts I set up last year a "segments" multiselect field shown below In Books, I set up a custom multi-select field with the same value as in the CRM And set up the synchronisation inside Books. Want to synchronise the Books Segments with the CRM Segments, but the later doesn't exist, and another non-existing is there ?! First, I don't understand where the field Segmentation is coming from. Second, I set CRM Segmentation to sync
Edit Reconciled Transactions
I realize transaction amounts and certain accounts cannot be edited easily once reconciled, but when I audit my operational transactions quarterly and at the end of the year sometimes I need to change the expense account for a few transactions. To do
Next Page