How can I tell if a custom object supports notes and attachments?

I have some apex that generates a PDF and tries to attach it to a custom object type that the user defines.

One issue I have with this is that if the type doesn’t support notes and attachments this fails, but I don’t really know that until after I already went to the trouble of generating the attachment record and trying to save it – quite a waste of resources for an operation that’s clearly doomed to fail.

Is there any way to tell, at runtime in apex, if an SObjectType supports notes and attachments?


This is possible, but in a rather roundabout way. There’s no way to tell from a Schema.SObjectType or Schema.SObjectDescribeResult, but there is a slightly obscure method on Schema.DescribeFieldResult that can help: getReferenceTo();

Set<Schema.SObjectType> attachableTypes =  new Set<Schema.SObjectType>(

System.debug(attachableTypes.contains(Account.SObjectType)); //true
System.debug(attachableTypes.contains(Note.SObjectType)); //false

What I’m doing here is checking what types of records can be valid in the attachment.parentId field. This returns a list, and there’s no efficient way to say “is my type in that big list”, so I’m building a Set for it’s contains method.

After that I can cache that set somewhere like a static variable an continue to reference it throughout my code as needed.

Bonus: The same idea can be applied to check if an SObject type supports tasks and events or not.

Source : Link , Question Author : ca_peterson , Answer Author : ca_peterson

Leave a Comment