This repository provides a guideline for Salesforce architects how to organise Salesforce metadata. Some components work very well with unlocked packages, others don't. Here, I gather insights about how these components behave in reality, beyond the limited information from the Metadata Coverage Report.
This repository is constantly updated, as the Metadata API and SFDX evolve. However, most recommendations are based on non-technical constraints and are not very likely to change anytime soon.
You can find all recommendations in the metadata-types folder. Each type has a brief readme with more details.
2GP - Second-generation packaging. Deployed with package install.
happy-soup - Your primary unpackaged metadata in a single repository. Deployed with source deploy or mdapi deploy.
isolated - An isolated repository for unpackaged metadata that is not deployed with the rest of happy-soup. Often requires additional deployment steps.
Metadata | Primary Organisation |
---|---|
Apex Class | 2GP |
Test Suite | 2GP |
Apex Trigger | 2GP |
Audience | isolated |
Aura Definition Bundle | 2GP |
Custom Application | happy-soup & 2GP1 |
Custom Field | 2GP |
Custom Labels | 2GP |
Custom Metadata | 2GP |
Custom Object | 2GP |
Custom Permission | 2GP |
2GP / happy-soup1 | |
Experience | isolated |
Flexi Page | happy-soup |
Flow | 2GP |
Group | happy-soup |
Layout | happy-soup |
Lightning Component Bundle | 2GP |
Navigation Menu | isolated |
Network | isolated |
Path Assistant | happy-soup |
Permission Set Group | happy-soup |
Permission Set | happy-soup |
Profile | happy-soup |
Queue | 2GP / happy-soup1 |
Quick Action | 2GP |
Record Type | 2GP / happy-soup1 |
Report Type | happy-soup |
Role | happy-soup |
Sharing Rule | happy-soup |
Sharing Set | isolated |
Standard Value Set | happy-soup |
Validation Rule | 2GP |
Workflow | 2GP / happy-soup1 |