New England Foundation for the Arts

Thumbnail

Salesforce Integration

With such a wide range of contacts, NEFA’s Salesforce instance is highly complicated. It has to track:

  • artists
  • artists who apply for grants
  • each grant program’s crop of applications, every year
  • who has won each grant
  • artist groups
  • other funding organizations
  • the kinds of people every non-profit must track: donors, volunteers, and other contacts.

There is a large amount of overlap among these groups—for example, an artist might apply unsuccessfully for a grant one year, skip the following year, and then win in the next year. She may belong to one artist group one year, then switch to another. These relationships and changes are all catalogued in Salesforce, so NEFA's isn't an everyday, fresh-from-Excel instance of the product.

NEFA came to us looking for help in pulling a select slice of this database over to their Drupal 7 website, so that site visitors could search the grant recipients from all previous years and grant programs. We had to work within narrow constraints:

  • NEFA administrators needed administrative control over what information was pulled over, and when.
  • They also needed the ability to tweak anything in the imported records, and protect their changes from future imports.
  • But they also needed the ability to overwrite those changes from Salesforce when necessary.

There was also a subtler need: because we had been working with NEFA for some years prior, we knew how complex their stakeholder group was. That meant lots of changes in the future. In addition to being sturdy, our system had to tolerate changes to the Salesforce database and to the functionality required.

Like good Drupalists, we looked to the community first, taking advantage of the excellent Salesforce module to provide a connection and some housekeeping functions. On top of that, we built a custom system for NEFA. Under the hood, it normalized the complex structure of their Salesforce database in a way that allowed us to quickly make changes when Salesforce changed.

On an administrator’s request, our system would pull in grant recipients from a specific date range. Each imported recipient became a piece of content (aka a Drupal “node”) which administrators could change as needed through the CMS. They also got a Do not update checkbox on each node, letting them lock their changes against future imports.

Finally, the display side needed to allow website visitors to intuitively search through the data. Our simple search form provides users with filters that do complex searches without too painful an interface. It also scales well to tablet and mobile displays.

This system has been working smoothly for about 18 months. As expected, Salesforce and functionality changes have been needed during that time, and we’ve been rolling with them!