Plone+Salesforce

Preview:

DESCRIPTION

Salesforce.com is a mature, feature-rich, highly customizable, software-as-a-service CRM that has had excellent integration with Plone since 2007. The combination of Plone and Salesforce.com is a great deal for non-profits - the Salesforce Foundation will donate up to 10 enterprise licenses to 501(c)3 organizations, and any additional licenses are deeply discounted. In this talk I will review the Plone+Salesforce integration toolkit, describe recent improvements to the toolkit, and contrast this with what other CMSes have to offer.

Citation preview

Plone+Salesforce

Sally Kleinfeldt, David Glick, Carlos de la GuardiaPlone Conference Brasilia

4 October 2013

Salesforce.com

Salesforce.com• Leading hosted CRM (customer

relationship management)

Salesforce.com• Leading hosted CRM (customer

relationship management)

• Mature

Salesforce.com• Leading hosted CRM (customer

relationship management)

• Mature

• Feature-rich

Salesforce.com• Leading hosted CRM (customer

relationship management)

• Mature

• Feature-rich

• Customizable

Salesforce.com• Leading hosted CRM (customer

relationship management)

• Mature

• Feature-rich

• Customizable

• Integrated with Plone since 2007

Salesforce Foundation

Salesforce Foundation• Leverage Salesforce.com

Salesforce Foundation• Leverage Salesforce.com

• Donate and discount products to non-profits

Salesforce Foundation• Leverage Salesforce.com

• Donate and discount products to non-profits

• 10 donated Enterprise Edition licenses

Salesforce Foundation• Leverage Salesforce.com

• Donate and discount products to non-profits

• 10 donated Enterprise Edition licenses

• Deep discounts on additional licenses

Salesforce Foundation• Leverage Salesforce.com

• Donate and discount products to non-profits

• 10 donated Enterprise Edition licenses

• Deep discounts on additional licenses

• Discounts on training, events, apps

Integration Toolkit

Initial Integration

Initial Integration• Funded by 2006 Salesforce Foundation

grant to ONE/Northwest (later Groundwire)

Initial Integration• Funded by 2006 Salesforce Foundation

grant to ONE/Northwest (later Groundwire)

• Beatbox – Python library, wraps Salesforce SOAP API

Initial Integration• Funded by 2006 Salesforce Foundation

grant to ONE/Northwest (later Groundwire)

• Beatbox – Python library, wraps Salesforce SOAP API

• SalesforceBaseConnector – Calls Salesforce SOAP API from Plone

Initial Integration

Initial Integration

• Salesforce PFG Adapter – Allows PFG forms to submit to Salesforce, provides field mapping

Initial Integration

• Salesforce PFG Adapter – Allows PFG forms to submit to Salesforce, provides field mapping

• SalesforceAuthPlugin – Authenticate logins against Salesforce

Expanded Toolkit

Expanded Toolkit

• Paypal2SalesforceLead- Paypal listener, adds a lead when a payment is made

Expanded Toolkit

• Paypal2SalesforceLead- Paypal listener, adds a lead when a payment is made

• Salesforce Order Recorder – GetPaid add-on, allows checkouts to generate items in Salesforce

Expanded Toolkit

Expanded Toolkit

• collective.salesforce.rsvp – accept registrations for unpaid events via Plone and store the data in Salesforce

Expanded Toolkit

• collective.salesforce.rsvp – accept registrations for unpaid events via Plone and store the data in Salesforce

• Megaphone – map participation in petitions and letters to Salesforce

Expanded Toolkit

Expanded Toolkit

• collective.salesforce.content – create Plone content types that are connected to objects in Salesforce

Fundraising

Turnkey Fundraising Site

Turnkey Fundraising Site

• The Innocence Project expanded the toolkit in 2012

Turnkey Fundraising Site

• The Innocence Project expanded the toolkit in 2012

• collective.salesforce.fundraising

collective.salesforce.fundraising

collective.salesforce.fundraising

• Standalone online fundraising system

collective.salesforce.fundraising

• Standalone online fundraising system• Integration with Salesforce.com

campaigns

collective.salesforce.fundraising

• Standalone online fundraising system• Integration with Salesforce.com

campaigns• Create campaign timelines and goals

One time and recurring donations

collective.salesforce.fundraising

• Standalone online fundraising system• Integration with Salesforce.com

campaigns• Create campaign timelines and goals

One time and recurring donations• Personal fundraising - allow users to

create personal campaign pages

collective.salesforce.fundraising

collective.salesforce.fundraising

• Payment processing

collective.salesforce.fundraising

• Payment processing • Integration with Stripe for recurring

donations including sending emails and updating Salesforce Recurring Donations

collective.salesforce.fundraising

• Payment processing • Integration with Stripe for recurring

donations including sending emails and updating Salesforce Recurring Donations

• Social integration via Janrain

Many Campaignshttps://secure.innocenceproject.org/donate

One Campaignhttps://secure.innocenceproject.org/donate/ypc-fundraiser-2013

Plone Foundation Fundraising Sitehttp://plonedemo.muselab.com

FundraisingTake 2

FundraisingTake 2

• Hard to add payment processors, switch CRM, etc.

FundraisingTake 2

• Hard to add payment processors, switch CRM, etc.

• Break collective.salesforce.fundraising into modular pieces

FundraisingTake 2

• Hard to add payment processors, switch CRM, etc.

• Break collective.salesforce.fundraising into modular pieces

• Work still in progress

collective.fundraising.*

collective.fundraising.*• collective.fundraising.core - Dexterity

behaviors and other shared functionality

collective.fundraising.*• collective.fundraising.core - Dexterity

behaviors and other shared functionality• collective.fundraising.site - Optimized

site configuration

collective.fundraising.*• collective.fundraising.core - Dexterity

behaviors and other shared functionality• collective.fundraising.site - Optimized

site configuration • Additional components planned for

Salesforce, Stripe, Recurly, Janrain, Mailchimp, Mandrill....

Recent Work

API

API• SOAP libraries were not ideal

API• SOAP libraries were not ideal

• Beatbox for generic API

API• SOAP libraries were not ideal

• Beatbox for generic API• Suds for custom API

API• SOAP libraries were not ideal

• Beatbox for generic API• Suds for custom API

• Salesforce now has a unified REST API with a new Python library: simple-salesforce

API

Message Queuing

Message Queuing • First generation toolkit was synchronous

Message Queuing • First generation toolkit was synchronous

• High latency - users and threads kept waiting

Message Queuing • First generation toolkit was synchronous

• High latency - users and threads kept waiting

• Tight coupling - errors when Salesforce unavailable

Message Queuing • First generation toolkit was synchronous

• High latency - users and threads kept waiting

• Tight coupling - errors when Salesforce unavailable

• Solution: message queue allowing asynchronous processing

Message Queuing

Message Queuing • Technologies chosen:

Message Queuing • Technologies chosen:

• Celery: http://www.celeryproject.org/

Message Queuing • Technologies chosen:

• Celery: http://www.celeryproject.org/ • Feature rich

Message Queuing • Technologies chosen:

• Celery: http://www.celeryproject.org/ • Feature rich• Good traction

Message Queuing • Technologies chosen:

• Celery: http://www.celeryproject.org/ • Feature rich• Good traction

• RabbitMQ: http://www.rabbitmq.com/

Message Queuing • Technologies chosen:

• Celery: http://www.celeryproject.org/ • Feature rich• Good traction

• RabbitMQ: http://www.rabbitmq.com/ • Message queue backend

Message Queuing

Message Queuing• Integrating Celery with Zope transactions

turned out to be easy

Message Queuing• Integrating Celery with Zope transactions

turned out to be easy• Use after-commit hook in case transaction

hits a database conflict and gets retried

Message Queuing• Integrating Celery with Zope transactions

turned out to be easy• Use after-commit hook in case transaction

hits a database conflict and gets retried• Created decorator to encapsulate

queueing and creating Salesforce connection

Future Work

Future Work• Package decorators for creating celery

tasks that run within Zope or do callouts to external webservices into a reusable library

Future Work• Package decorators for creating celery

tasks that run within Zope or do callouts to external webservices into a reusable library

• Higher-level Plone add-on for configuring synchronization between Plone content types and Salesforce objects

Competition

Drupal+Salesforce

Drupal+Salesforce• Salesforce Suite

Drupal+Salesforce• Salesforce Suite

• https://drupal.org/project/salesforce

Drupal+Salesforce• Salesforce Suite

• https://drupal.org/project/salesforce• Modular integration framework for

developers

Drupal+Salesforce• Salesforce Suite

• https://drupal.org/project/salesforce• Modular integration framework for

developers• Lower level components to build from

Drupal+Salesforce• Salesforce Suite

• https://drupal.org/project/salesforce• Modular integration framework for

developers• Lower level components to build from• Recently rewritten

Drupal+Salesforce

Drupal+Salesforce• Springboard

Drupal+Salesforce• Springboard

• http://www.jacksonriver.com/springboard

• Out of the box non-profit fundraising and marketing

Drupal+Salesforce• Springboard

• http://www.jacksonriver.com/springboard

• Out of the box non-profit fundraising and marketing

• Satisfies a particular set of use cases

Drupal+Salesforce

Drupal+Salesforce

• RedHen

Drupal+Salesforce

• RedHen• http://redhencrm.com/

Drupal+Salesforce

• RedHen• http://redhencrm.com/• Native Drupal CRM

Drupal+Salesforce

• RedHen• http://redhencrm.com/• Native Drupal CRM• Designed to be integrated with

Salesforce

Joomla!+Salesforce

Joomla!+Salesforce

• JoomForce

Wordpress+Salesforce

Wordpress+Salesforce

• WordPress to Lead for Salesforce

Wordpress+Salesforce

• WordPress to Lead for Salesforce• http://wordpress.org/plugins/

salesforce-wordpress-to-lead/• Easy to install• Basic web to lead forms

Wordpress+Salesforce

Wordpress+Salesforce• Gravity Forms to Salesforce

Wordpress+Salesforce• Gravity Forms to Salesforce

• http://wordpress.org/plugins/gravity-forms-salesforce/

• Easy to install• Web to lead forms with custom fields

Wordpress+Salesforce• Gravity Forms to Salesforce

• http://wordpress.org/plugins/gravity-forms-salesforce/

• Easy to install• Web to lead forms with custom fields• Use the API with Salesforce Enterprise,

Unlimited and Developer Edition

Plone vs. The Others

Plone vs. The Others

• Plone offers richer Salesforce integration than Joomla! or Wordpress

Plone vs. The Others

• Plone offers richer Salesforce integration than Joomla! or Wordpress

• Plone and Drupal offer a similar level of Salesforce integration but packaged differently

Questions?