Visit the site
Visit the siteOrganizations Involved
Community contributions
We believe in open source and have been actively contributing to the Drupal community since 2005. Not only do we contribute code, but we also try to promote Drupal in the DACH region and support the local community by organizing meetups or camps.
Below is a list of contributions, some of which have already been discussed above. The following modules were programmed for this project:
Address_autocomplete
https://www.drupal.org/project/address_autocomplete
Persistent Visitor Parameters module
https://www.drupal.org/project/persistent_visitor_parameters
Salesforce Past Log module
https://www.drupal.org/project/salesforce_past
Salesforce Commerce Stock Mapping module
https://www.drupal.org/project/salesforce_commerce_stock
Past Log Alerts module
https://www.drupal.org/project/past_alert
Google Product Categories
https://www.drupal.org/project/google_product_categories
The following issues were worked on as part of this project:
Webform Issue (Composite elements - title max length 128)
https://www.drupal.org/project/webform/issues/3300331
Commerce: Product taxonomy filter
https://www.drupal.org/project/product_taxonomy_filter/issues/3194006
acolono GmbH is also a supporting member of the Austrian Drupal Association and its founders Christian Ziegler and Nico Grienauer are on the board of the association and one of the driving forces behind events such as the DrupalCamp Vienna, the Open Minds (Open Source) Award or the DrupalCon Vienna Community Day.
Relaunch of the website shop.wwf.ch with Drupal 9 and connection of shop, donations and webforms to Salesforce.
The overarching goal of the WWF is to protect the environment and create a future worth living in for future generations. Sales from the sale of sustainable products via the web shop and donations make a valuable contribution to this. As part of this project, the web shop, previously operated with Drupal 7, and the donation system were to be modernized.
At the same time, the old CRM should be replaced by Salesforce and payments, both for donations and shop orders, should be made using FinDock, a native customer payment platform for Salesforce. For this purpose, the donation system was replaced by a proprietary solution and the shop was redesigned and rebuilt with Drupal 9.
About the project
The project went online with Drupal version 9 in April 2022. Drupal Commerce was used for this, both for the donations and for the shop. During the conception, the question was raised as to whether the shop should continue to be available under a separate domain, or whether it should be integrated into the existing main page wwf.ch. We decided to integrate it into the existing main page, mainly because all content can be managed centrally in a CMS and integration with the appropriate website content is of great importance for an optimal customer experience. Special page elements were programmed for this. So that products, depending on availability and category, can be listed and advertised on any content page. Nevertheless, the shop was given its own area, including a specific header and footer. See https://www.wwf.ch/en/shop.
Migration and enrichment of the products
Important factors in the relaunch were the migration of the existing products and the enrichment with additional data such as labels, availability, categories and media. For this purpose, extensive migration scripts were programmed and adapted to the needs of the WWF.
Salesforce integration
The connection of Salesforce was also a central point of this project. All orders and customer data should be stored in Salesforce and FinDock should be used as the payment interface. The Drupal Salesforce module proved to be a very good basis for this, especially the authentication and the linking of Drupal entities and Salesforce objects could be optimally implemented with it. This concept also proved to be robust in operation, because data can be sent again even in the event of potential Salesforce API failures. We have developed our own queue for this purpose, which does not overload the Salesforce APIs even with many simultaneous orders. In combination with detailed logging, this always ensures transparency and data security.
We therefore use the Past Log module for logging and notifications and have also created a small integration module for the Salesforce module and made it available to the community: https://www.drupal.org/project/salesforce_past
The product availability is synched directly with Salesforce, because not all orders have to be placed via the web shop. We have also created a small Drupal module for this: https://www.drupal.org/project/salesforce_commerce_stock
Salesforce integration for donations
Payments for donations should be made via FinDock. For this purpose, the old donation system was replaced and the forms were replaced with a separate Commerce Checkout. A special feature here is that no shopping cart is used, but orders are generated directly by the system for donations and data is taken from donation products. Configurable "donation teasers" that can be displayed on any website content take you directly to the checkout specially adapted for donations. See https://www.wwf.ch/de/spenden.
Salesforce integration for Webforms
Since webforms are also used very extensively, they are of course also connected to Salesforce (web-to-lead). A special feature here is that newsletter subscriptions are also sent to Salesforce from a third-party service via a Drupal API for Webform Submissions.
Multilingualism
One of Drupal's strengths is multilingualism. In this project, too, it was a requirement that all products, content pages and checkouts are available in at least three languages. This requirement could be optimally implemented with Drupal, both for donations and for the shop.
End-to-end testing with Cypress.io
The more services and APIs are responsible for the proper operation of an application such as a web shop, the more important it is to test the functionality regularly. Automated tests are essential for projects of this magnitude, especially after updates. We use a combination of PHPUnit kernel tests and end-to-end tests using cypress.io. Especially cypress.io makes it easier for us to test the processing of a donation and shop checkouts with a large number of combinations of products and payment methods (recurring payments, one-off payments, different payment providers, etc.).
An exemplary working environment
We really enjoyed working with the WWF, not only because we can identify very well with the goals of this organization. We would like to thank you for the trust you have once again placed in us and look forward to further cooperation. We would also like to express a special thanks to MD Systems for the support in working with the FinDock Drupal module and the exchange regarding Salesforce integrations. The design for the shop comes from getunik, here too the cooperation was exemplary and extremely pleasant.
Competent, fast, uncomplicated: acolono finds a solution for every problem. We look forward to further cooperation and are happy to be able to count on acolono.
Dominik Stolz / Manager Analytics & Customer Experience, Marketing Analytics & Applications WWF
Challenges
Efficient and technically sensible data exchange between Drupal Webshop and Salesforce
A particular challenge was the design of the data exchange between Drupal and Salesforce. Product management is missing in Salesforce and FinDock generally has no logical understanding of shopping carts. We were therefore forced to handle some of the communication with Salesforce directly and to synchronize it with payment data. Certain limits of the Salesforce API also made some special programming necessary.
Drupal Commerce without shopping cart functionality
Basically, Drupal Commerce is not designed for operation without a shopping cart. For the donation system, however, it was necessary to be able to link directly to the checkout and to take over data such as donation product, amount and frequency of donations contextually. However, the Drupal Commerce APIs are so flexible that we were able to find a good solution for this as well.
Why Drupal was chosen
The project shows that Drupal is a very good choice when it comes to enabling editorial teams to flexibly design content, landing pages, products and donation forms, to put them online in a timely manner and to be able to present them in a modern and appealing way.
Drupal is also a very good choice for multilingual web shops and the individual programming of CRM connections thanks to the diverse APIs and functionalities of Drupal Core, Drupal Commerce and various Contrib modules.
Technical Specifications
Drupal version:
Key modules/theme/distribution used: