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
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/• Native Drupal CRM
Drupal+Salesforce
• RedHen• http://redhencrm.com/• Native Drupal CRM• Designed to be integrated with
Salesforce
Joomla!+Salesforce
Joomla!+Salesforce
• JoomForce
Joomla!+Salesforce
• JoomForce• http://extensions.joomla.org/
extensions/clients-a-communities/crm-bridges/14704
Joomla!+Salesforce
• JoomForce• http://extensions.joomla.org/
extensions/clients-a-communities/crm-bridges/14704
• Lead and Contact capture through auto generated forms
Wordpress+Salesforce
Wordpress+Salesforce
• WordPress to Lead for Salesforce
Wordpress+Salesforce
• WordPress to Lead for Salesforce• http://wordpress.org/plugins/
salesforce-wordpress-to-lead/
Wordpress+Salesforce
• WordPress to Lead for Salesforce• http://wordpress.org/plugins/
salesforce-wordpress-to-lead/• Easy to install
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/
Wordpress+Salesforce• Gravity Forms to Salesforce
• http://wordpress.org/plugins/gravity-forms-salesforce/
• Easy to install
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?