A desktop application for backing up and restoring Salesforce data using the Bulk API v2. Supports export to CSV files or direct database integration (Snowflake, PostgreSQL, SQL Server).
| Platform | Download |
|---|---|
| Windows | BackupForce-3.0.0-portable.zip |
| macOS | BackupForce-3.0.0-macos.zip |
| Linux | BackupForce-3.0.0-linux.tar.gz |
Runtime is bundled - no Java installation required.
┌─────────────────────────────────────────────────────────────────┐
│ BackupForce │
├─────────────────────────────────────────────────────────────────┤
│ UI Layer (JavaFX) │
│ ├── FXML Controllers │
│ └── CSS Theming │
├─────────────────────────────────────────────────────────────────┤
│ Service Layer │
│ ├── BackupService (orchestrates backup operations) │
│ ├── RestoreService (handles data restoration) │
│ └── TransformationService (cross-org field mapping) │
├─────────────────────────────────────────────────────────────────┤
│ API Layer │
│ ├── BulkV2Client (Salesforce Bulk API v2) │
│ ├── SalesforceClient (REST API for metadata) │
│ └── OAuthManager (OAuth 2.0 authentication) │
├─────────────────────────────────────────────────────────────────┤
│ Storage Layer │
│ ├── CsvExporter │
│ ├── DatabaseExporter (Snowflake, PostgreSQL, SQL Server) │
│ └── BlobDownloader (Attachments, ContentVersion, Document) │
└─────────────────────────────────────────────────────────────────┘
| Component | Description |
|---|---|
BulkV2Client |
HTTP client for Salesforce Bulk API v2 with connection pool recovery |
BackupService |
Multi-threaded backup orchestration (5 parallel workers) |
RestoreService |
Handles insert/update/upsert with relationship resolution |
TransformationService |
Maps RecordTypes, picklist values, and users between orgs |
- Bulk API v2 - Efficient export for large datasets (millions of records)
- Field Selection - Select specific fields per object
- Blob Export - Downloads
Attachment.Body,ContentVersion.VersionData,Document.Body - Record Limits - Test with limited record counts
- Parallel Processing - 5 concurrent worker threads
| Database | Blob Storage | SSO | Notes |
|---|---|---|---|
| Snowflake | BINARY(8MB) |
Externalbrowser | Recommended |
| PostgreSQL | BYTEA |
- | Standard JDBC |
| SQL Server | VARBINARY(MAX) |
- | Standard JDBC |
| CSV | File + path column | - | Default |
- Insert/Update/Upsert operations
- Relationship Resolution - Resolves lookup references automatically
- Dependency Ordering - Restores parent objects before children
- Cross-Org Transformation - Maps metadata between different orgs
- Dry Run - Preview transformations before execution
BackupForce maintains referential integrity by preserving all lookup and master-detail relationships.
| File | Purpose |
|---|---|
ObjectName.csv |
Record data with IDs and lookup references |
_backup_manifest.json |
Relationship metadata and restore order |
_id_mapping.json |
ID to external identifier mappings |
Same Org:
- Restore parent objects (Account, User)
- Restore child objects (Contact, Opportunity)
- Lookup IDs resolve automatically
Different Org:
- Insert parent records, capture new IDs
- Build OldId → NewId mapping
- Transform lookup values in child records
- Insert child records
{
"metadata": {
"version": "2.0",
"backupType": "relationship-aware"
},
"restoreOrder": ["Account", "Contact", "Case"],
"objects": {
"Contact": {
"relationshipFields": [
{ "fieldName": "AccountId", "referenceTo": ["Account"] }
],
"externalIdFields": [
{ "name": "External_ID__c", "type": "string" }
]
}
}
}- Windows 10/11, macOS 11+, or Linux (Ubuntu 20.04+, RHEL 8+)
- Java 21+
- Maven 3.9+
- Download from Releases
- Extract or install:
- Windows: Extract
.zipor run.msi - macOS: Mount
.dmg, drag to Applications - Linux: Extract
.tar.gzor install.deb/.rpm
- Windows: Extract
git clone https://github.com/victorfelisbino/BackupForce.git
cd BackupForce
mvn javafx:runBuild executable:
.\scripts\build-portable.ps1OAuth 2.0 with Salesforce. Supports Production and Sandbox environments.
- Select objects from the object list
- Configure output folder
- Optional: Set record limit, configure database connection
- Start backup
- Select backup folder containing CSV files and manifest
- Choose operation: Insert, Update, or Upsert
- Configure transformation mappings if restoring to different org
- Preview with dry run, then execute
Host: account.snowflakecomputing.com
Database: SALESFORCE_BACKUP
Schema: PUBLIC
Blob columns include:
BLOB_FILE_PATH- Original filenameBLOB_SIZE- Size in bytes
Query blobs:
SELECT Id, Name, TO_VARCHAR(Body, 'HEX') as BodyHex FROM Attachment;Default: 4GB heap. Adjust for large objects:
java -Xmx8g -jar BackupForce.jarConfigure Connected App in Salesforce Setup. See docs/OAUTH_SETUP.md.
| Issue | Solution |
|---|---|
| JVM launch failure | Use bundled runtime release |
| OutOfMemoryError | Increase heap: -Xmx4g or -Xmx8g |
| Connection errors | Check IP whitelist, verify API access |
src/main/java/com/backupforce/
├── api/ # Salesforce API clients
├── model/ # Data models
├── service/ # Business logic
├── ui/ # JavaFX controllers
└── util/ # Utilities
mvn clean package # JAR
mvn javafx:run # Run from source
.\scripts\build-portable.ps1 # Windows executablemvn test # Unit tests
mvn verify -PuiTests # UI tests (headless)See docs/ROADMAP.md.
| Status | Feature |
|---|---|
| Complete | Bulk API v2 backup, Database export, Blob download, Data restore, Cross-org transformation |
| Planned | Scheduled backups, Incremental backups, CLI, Field history archiving |
MIT License - see LICENSE.
Issues and pull requests welcome.
