| Understand the module architecture and components |
Architecture Overview |
| Choose between OAuth and JWT authentication |
OAuth Authentication |
| Set up JWT bearer token authentication |
JWT Authentication |
| Create entity-to-Salesforce field mappings |
Mapping Framework |
| Configure mappings via admin UI |
Mapping UI & Sync Triggers |
| Push Drupal entity changes to Salesforce |
Push Synchronization |
| Pull Salesforce changes into Drupal |
Pull Synchronization |
| Choose optional submodules (logger, webform, address, SOAP) |
Optional Submodules |
| Hook into sync events with EventSubscriber |
Event System |
| Query and CRUD objects via the REST client |
REST Client API |
| Build SOQL queries programmatically |
SOQL Query Builder |
| Load and create MappedObject entities |
Mapped Objects API |
| Queue entities for push programmatically |
Push Queue Operations |
| Create a custom field mapping plugin |
Custom Field Mapping Plugin |
| Export mappings and manage auth per environment |
Configuration Management |
| Configure cron vs standalone queue processing |
Queue Processing |
| Run Drush commands for push, pull, and maintenance |
Drush Commands |
| Find RestClient, SFID, SObject, and other class references |
Class Reference |
| Diagnose auth failures, push/pull not triggering, stuck queues |
Troubleshooting |
| Optimize caching, queue limits, and API call efficiency |
Performance |
| Create custom auth providers, queue processors, pull workers |
Extension Patterns |
| Decide submodule selection and events vs plugins vs config |
Decision Framework |