Porting the Drupal Salesforce Suite to D8

A laptop displaying code with the drupal drop logo overlaid
Behind the Scenes

This post is the first in a series about Message Agency's commitment to ensuring that nonprofits can continue to leverage Salesforce and Drupal with every new release. We developed the original integration modules in 2010 for Drupal 6 and have continued to support this important tool ever since. We've taken the lead in porting the modules for Drupal 8 and have committed to accelerate development, with beta modules planned for release in the first quarter of 2017. This post, by Aaron Bauman, describes the current roadmap. 

Gaining Traction

In fall of 2013, I found myself with some free time and jumped into Drupal 8 (D8) with both feet. APIs were still very much in flux, but I put together a first pass of an initial port of Salesforce Suite from Drupal 7 (D7) to D8. After running into several roadblocks around various yet-to-be-ported core hooks, and falling under various client pressures, this work was shelved. Fast-forward three DrupalCons and one Drupal 8.0 release later, and I found myself re-inspired to move forward with the Salesforce Suite updates. Two dozen meta-comments, half a dozen refactors, and more than 100 hours later, Salesforce-8.x-3.x is picking up steam.

Many of the new D8 basics— such as module routing, permissions, info.ymls, and services — are now in place. Old procedural code has been updated to PSR-4 classes. Deprecated and irrelevant hook implementations have been converted and removed. And there is much more underway and planned.

Improvements and Missing Pieces

Contributors have identified dozens of goals in the D8 Salesforce Suite Roadmap discussion. Not satisfied with a simple update from D7, Message Agency will address some of the missing features from 7.x-3.x including

  1. Asynchronous, batched handling of push/pull operations
  2. Full support for multiple mappings per entity
  3. Consistent, opaque use of SOAP client as applicable
  4. Error handling and recovery
  5. Merge handling

Additionally, we'll create a full battery of automated tests, including a mock API service for use in isolated environments.

Formal Roadmap

To help organize these and other ambitious goals, I've created the first task breakdowns—ready to be picked up and contributed to— on drupal.org and categorized them with various SFD8 tags.

Our ROADMAP.txt further breaks down open issues, and aggregates nearly 100 (as of this post) @todos from across the codebase.

Stay tuned for more posts charting our progress.