How to restrict multiple attachments on a Salesforce Custom object

| By Webner

Restrict a user to create multiple attachments on a specific custom object.

To accomplish this, as it is not possible to create a process builder or workflow on Notes & Attachments object, neither we have a privilege to view attachment object inside Salesforce, so creating a trigger will work in this case.

Here are the steps to create the trigger in Salesforce:-

1. Go to developer console.
2. Go to New-> Apex Trigger.
3. Select the sObject name (Attachment) from drop down.
4. Specify the trigger name and save.


In the Attachment trigger, retrieve all the attachments and filter them via ParentId using the Prefix of custom object. Store the parent ids in customObjectIdList from these attachments. Also, maintain a map that will hold the custom object Id and the related attachment object in customObjectByAttachObject.

for(Attachment eachAttachment : newAttachmentRecords){
//check if parent of the attachment is the custom object using prefix of the object. Say here it is ‘‘00W’’
	 If (String.valueOf(eachAttachment.ParentId).startsWith(‘00W’)){
       customObjectByAttachObject.put(eachAttachment.ParentId, eachAttachment);

After this, you may add the below code:

List relatedAttachments = [SELECT COUNT(Id), ParentId FROM Attachment WHERE Parentid IN: customObjectIdList GROUP BY ParentId ];

for(AggregateResult relatedAttachment : relatedAttachments ){
       	 Id attachmentId = String.ValueOf(relatedAttachment.get('ParentId'));
            // The condition below will help to identify whether it has an attachment already or not.
            if(Integer.valueof(relatedAttachment.get('expr0')) >= 1){
customObjectByAttachObject.get(String.valueOf(relatedAttachment.get('ParentId'))).adderror('You can attach only one file for one custom object record');    	

Leave a Reply

Your email address will not be published. Required fields are marked *