Creating a ContentDocumentLink to a Custom Object in Salesforce

It’s not possible.

At least not at the time of writing this.

After countless hours, we have determined that it is not possible. We get a pretty blatant error from Salesforce though.

FIELD_INTEGRITY_EXCEPTION, You cannot create a link for this type of entity.

Of course, that wasn’t enough. We tried to link Chatter files, we checked permissions, we did the whole shebang. If you come to this page in your search, and you get a similar error, do yourself a favor and stop. I would LOVE to be able to modify this article and say it’s possible, so if you don’t stop coding, please leave me a comment!

So I don’t leave you empty handed, here is the code that I used to, at the very least, create a file and add it to a Content Library, specified by the $contentLibraryId variable. I clearly use the PHP Toolkit with Salesforce.
$sObject = array();
$sObject[0] = new stdclass();
$sObject[0]->Title = $fileName;
$sObject[0]->PathOnClient = $_FILES["uploaded_file"]["name"];
$sObject[0]->VersionData = $encoded_file;
$sObject[0]->FirstPublishLocationId = $contentLibraryId;
$response = $mySforceConnection->create($sObject, 'ContentVersion');

And of course, the code that created the error…
$query = "SELECT Id FROM ContentDocument WHERE LatestPublishedVersionId = '" . $contentDocumentId . "'";
$response = $mySforceConnection->query($query);
$contentId = $doc_response->records[0]->Id; // note - this is used below!
$sObject = array();
$sObject[0] = new stdclass();
$sObject[0]->ContentDocumentId = $contentId;
$sObject[0]->ShareType = "C";
$sObject[0]->LinkedEntityId = $CustomObjectId;
$response = $mySforceConnection->create($sObject, 'ContentDocumentLink');

This, by the way, is what I’m struggling to achieve: adding files to this “Related Content” area.

Stack Overflow link reference

Leave a Reply

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