Salesforce Admin
Salesforce administration via CLI with best practices for metadata management, security, automation, and data operations.
Quick Reference
Common sf CLI Commands
bash
# Authentication sf org login web --alias myorg # Login via browser sf org login web --alias myorg --instance-url https://test.salesforce.com # Sandbox sf org list # List connected orgs sf org display --target-org myorg # Show org details # Metadata Operations sf project retrieve start --metadata "CustomObject:Account" # Retrieve specific sf project retrieve start --manifest manifest/package.xml # Retrieve from manifest sf project deploy start --source-dir force-app # Deploy directory sf project deploy start --metadata "CustomField:Account.Custom__c" # Deploy specific # Data Operations sf data query --query "SELECT Id, Name FROM Account LIMIT 10" --target-org myorg sf data export tree --query "SELECT Id, Name FROM Account" --output-dir data/ sf data import tree --files data/Account.json --target-org myorg # User Management sf org assign permset --name MyPermSet --target-org myorg sf org generate password --target-org myorg
Workflow Decision Tree
- •Creating/modifying metadata → Use
sf project retrievethen edit XML, thensf project deploy - •User/security changes → See references/security.md
- •Building automation → See references/automation.md
- •Data operations → See references/data-management.md
- •Object/field work → See references/objects-fields.md
Project Structure
Standard Salesforce DX project layout:
code
force-app/
└── main/
└── default/
├── classes/ # Apex classes
├── objects/ # Custom objects and fields
│ └── MyObject__c/
│ ├── MyObject__c.object-meta.xml
│ └── fields/
│ └── MyField__c.field-meta.xml
├── flows/ # Flow definitions
├── permissionsets/ # Permission sets
├── profiles/ # Profiles
├── triggers/ # Apex triggers
└── layouts/ # Page layouts
manifest/
└── package.xml # Deployment manifest
Naming Conventions (Best Practices)
| Type | Convention | Example |
|---|---|---|
| Custom Object | PascalCase + __c | Invoice__c, OrderItem__c |
| Custom Field | PascalCase + __c | Total_Amount__c, Is_Active__c |
| Flow | PascalCase, descriptive | Account_After_Insert_Handler |
| Permission Set | PascalCase, role-based | Sales_Manager_Access |
| Apex Class | PascalCase | AccountTriggerHandler |
| Apex Trigger | Object + Trigger | AccountTrigger |
Common Tasks
Create a Custom Object
- •
Retrieve existing objects for reference:
bashsf project retrieve start --metadata "CustomObject"
- •
Create object metadata XML at
force-app/main/default/objects/MyObject__c/MyObject__c.object-meta.xml - •
Deploy:
bashsf project deploy start --source-dir force-app/main/default/objects/MyObject__c
Add a Custom Field
- •
Create field XML at
force-app/main/default/objects/Account/fields/My_Field__c.field-meta.xml - •
Deploy:
bashsf project deploy start --metadata "CustomField:Account.My_Field__c"
Deploy with Validation Only (Checkonly)
bash
sf project deploy start --source-dir force-app --dry-run --test-level RunLocalTests
Run Apex Tests
bash
sf apex run test --target-org myorg --test-level RunLocalTests --wait 10 sf apex run test --class-names MyTestClass --target-org myorg
Resources
- •references/objects-fields.md - Object/field metadata templates and patterns
- •references/security.md - Profiles, permission sets, sharing rules
- •references/automation.md - Flows, Process Builder migration, approval processes
- •references/data-management.md - Import/export, deduplication, data quality