Skip to content

Latest commit

 

History

History
66 lines (42 loc) · 2.85 KB

File metadata and controls

66 lines (42 loc) · 2.85 KB

Understanding the Salesforce File System 📂

Salesforce File System Object Relationships Diagram


Explore how Salesforce manages files using the ContentDocument, ContentVersion, and ContentDocumentLink objects. This repository includes detailed resources and examples from my YouTube demonstration.

🎥 Watch the Video Tutorial to learn more:

YouTube: Master Salesforce File Management System with Apex Triggers, SOQL & Flows (With Practical Use Cases & Examples)


Overview

This repository is designed for developers and Salesforce admins who want to:

  • Understand relationships between the ContentDocument, ContentVersion, and ContentDocumentLink objects: their fields, usage, and purpose.
  • Learn Apex trigger-based scenarios for handling file uploads, updates, deletions, and record associations.
  • Explore real-world use cases, including:
    • SOQL queries for retrieving records across various scenarios.
    • Querying all related files and their versions for any record using Flows.
    • Previewing files and their versions in a data table.
    • Generating secure, shareable links with optional expiration dates and passwords for external access.

Key Points to Note ⚠️

  1. On File Upload/Insert:

    • All three objects—ContentDocument, ContentVersion, and ContentDocumentLink—triggers are fired.
  2. On Uploading a New Version of a File:

    • Only the ContentVersion trigger is fired.
  3. On Removing a File from a Record:

    • The ContentDocumentLink trigger is fired on deletion, identifying the related record using the LinkedEntityId.
  4. On Deleting a File from Salesforce:

    • Only the ContentDocument trigger is fired.

Salesforce Documentation References


📚 Installation & Setup

  1. Clone the repository:
    git clone https://github.com/IAm-RoyAnirban/Salesforce-Files-System.git
    

Contributions

Feel free to fork this repository and contribute by submitting issues or pull requests. If you encounter any issues or need additional features, please raise a GitHub issue.


License

This project is licensed under the MIT License - see the LICENSE file for more details.