INTRODUCING MEMBERSHIP EXTRAS!
Over the past 12 months the team at Compucorp have been working super hard on a major leap for the CiviCRM membership module. We have a new suite of extensions and modules that will shortly be available to download from the CiviCRM website (you can download the beta from github now!). These include:
Direct Debit for Membership Extras - a companion CiviCRM extension that allows organisations to follow standard auddis processes for direct debit.
Webform CiviCRM Membership Extras - a companion Drupal module that brings Drupal webform support for all the extra membership functionality the extension provides.
Webform Direct Debit for Membership Extras - a companion Drupal module that brings the webform support for the Direct Debit extension.
Why all the work on memberships I hear you ask? Well memberships are fiddly to get right… and over the years we’ve found clients who have struggled with a few more complex use cases. Here’s a few details:
Instalments: Whilst CiviCRM allows you to have memberships that can have different durations (eg. monthly, annual, lifetime) CiviCRM doesn’t support actual payment by instalments. This is where an organisation will want to offer a membership that has a different duration to the payment duration. For example an annual membership that is paid in monthly or quarterly instalments. With Membership Extra’s you can!
Offline autorenewal: CiviCRM has support for many payment processors, including several Direct Debit payment processors. With these “online” payment processors, when the membership comes to renew, the logic is actually managed by the payment processor in order to renew the membership and take next years payment. CiviCRM doesn't however have any functionality for memberships where the payment is “offline” i.e. some Direct Debit processes or where you invoice clients in advance of receiving the payment. With Membership extras CiviCRM now fully supports offline automated renewal including sending email notifications with invoices for payment. We also have created a new offline batch direct debit export module which allows for full management of high volume direct debits through export processes.
"Offline" direct debits: CiviCRM has integration for one or two “online” direct debit providers such as smart debit and gocardless. For some clients however they already use an existing offline provider and require a batch export which conforms to Auddis process. This extension builds on top of Membership extras to provide communications and batching processes to support Auddis processes.
Memberships in arrears: CiviCRM’s default handling of members being in “arrears” only supports a few use cases (specifically where members either do not renew at all) or where they do not pay before a grace period elapses. In order to really support payment by instalments we have extended the membership status rules, to also be able to change the status of a membership when a payment relating to the membership is overdue, so you can track members in arrears (and email them automatically!) before finally ending their membership benefits.
Webforms integration: All the above has been integrated with Drupal webforms in order to support installments and direct debit payments. We’ve also been working hard to add some really cool functionality for upgrade and downgrade to webforms (see the coming soon section below!).
Subscription management: After the extension provided users the ability to pay for memberships in instalments, we thought it would be a great idea to allow the flexibility to make modifications on any ongoing payment plans with instalments and the future renewal of these payment plans. Subscription management is created to solve this problem.
Membership periods: CiviCRM does not keep detailed information for each membership sign up and renewal currently. If you wish to check how many periods has there been for a specific membership and the payment history for each period, it is simply impossible at the moment. Therefore, we are on mission to bring membership periods into the package.
Webform membership start/end date calculation: Do you want to allow your members to be able to renew to a different membership when the current membership ends? Does your organisation provide any membership addon options which could be added any existing membership subscriptions? Do you want to have a better control over user driven membership sign-up/ renewal? Yes? Then this is for you!
SmartDebit Integration: By integrating our Direct Debit extension with SmartDebit, we are taking one more step out of your regular Direct Debit process to make it even more productive.
Members only events: Many membership organisations also organise various of events. Some of the events are often member-only as a part of the membership benefit package. We are going to add members only event support soon in Membership Extras. It will allow admins to change any event into a member-only event. Admin will also have option to provide a membership sign up link when non-member customer tries to sign up for any member-only event.
Membership status rules by membership type: CiviCRM’s membership status rules is designed to apply to all membership types in the system. However, sometimes different membership types within an organisation can have different status journeys. We are planning to add a functionality to membership extras to allow status exceptions to selected membership types. If you only provide grace period to higher grade memberships, this will solve your problem.
Membership Extras is designed to take CiviCRM’s membership management to an enterprise level, allowing organisations of all sizes to manage complex membership processes in a more automated way. With CiviCRM and membership extra installed organisations can now manage vast numbers of memberships efficiently with little or no manual intervention.
We’ll be hosting a series of webinars on the new functionality of membership extras over the coming weeks, but if you think Membership extras would be useful for your organisation and would like to find out more, then please don’t hesitate to contact the Compucorp team at email@example.com.
The gory details:
Membership subscription in instalments
Many membership organisations offer subscriptions paid for in instalments. This is to say that whilst the membership may have a full length term (for example annually renewing), the payments should be made on a shorter term (for example monthly). In vanilla CiviCRM, the only option is for administrators to create membership types with a term of the payment (i.e. monthly) and require the customer to opt in auto-renewal via an online payment processor. The administrator however will struggle to know which actual term the member is in, as only the detail of the monthly renewals will be maintained.
With Membership Extras extension installed, when recording payments for new membership or membership renewal, admin will be able to choose between creating a contribution in full and creating a payment plan in instalments. If payment plan option is selected, apart from the usual information fields available to contribution option, admin will also be able to adjust:
The start date of the payment plan i.e. first instalment date
Number of instalments i.e. how many parts should be the full amount be broken into
Instalment interval i.e. how often should a instalment be collected
In the scenario of creating an annual Standard Membership with 12 instalments, the following items will be created:
A membership(s) of the selected type(s)
A recurring contribution stating the payment plan instalment information
All 12 instalment contributions - we chose to create all instalments upfront so organisations can have a better overview of what’s expected
All 3 elements above are linked with each other. We have also contributed some improvements to CiviCRM core to better display these elements. You will now see the contributions and recurring contributions in different sub-tabs under the contribution tab. When viewing the membership, you will also be able to see all related contributions and recurring contributions at the same time.
This also works with pricesets for multiple membership lines or membership combinations/add-ons. (Very cool!).
Memberships in arrears
Since by using payment in instalment, we are splitting a full term membership fee into several instalment contributions, CiviCRM’s current logic is no longer sufficient to deal with the relevant membership status. Hence, we have introduced two membership status rule trigger events as a part of the extension:
Membership in arrears: when a instalment contribution passed its received date and is not completed
Membership no longer in arrears: all instalments contributions in the past are completed
With these two trigger events, we can create some dedicated status rules to efficiently automate the payment status impact on the status of all memberships in the system.
For example: a typical status rule configured in the image above will automatically set an inactive “In Arrears” status for any memberships which has failed to fulfilled any instalment payment for more than 30 days. The memberships will also be taken out of “In Arrears” status as soon as all past instalment payments are caught up.
You could couple this with a few scheduled reminders (automated emails) to automatically chase your overdue subscribers!
In some situations, (for example corporate memberships being paid by invoice or memberships paid by offline direct debit processes) it is normal for an organisation to want to renew the membership prior to its end, so that either the members can be sent an invoice prior to payment, or we can generate a list of payments required to be taken by direct debit.
Whilst CiviCRM will auto-renew memberships which are made online and paid by an online payment processor, without instalments, there is no functionality to support renewal for memberships paid offline (without renewing each membership manually). We wanted to create a completely automated solution to this… so introducing “offline auto-renewal” of memberships.
With Membership Extras extension installed, you will now see an offline auto-renew option in both new membership and membership renewal screens. When this option is selected, even if you selected to create a contribution instead of payment plan in instalments, a recurring contribution will still be created so the contribution can be repeated when auto-renewal happens.
The extension registers a new scheduled job “Renew offline auto-renewal memberships” which you will need to enable. Once the job is executed, any auto-renew enabled membership will be renewed if its end date is reached.
As a small aside, due to some quirks in CiviCRM there is a slightly different approach for memberships paid in one instalment (a single contribution) as to those paid by multiple instalments. For memberships with a single instalment, CiviCRM will create a new contribution for each renewal (just as it would for a normal online payment processor) with the full amount under the same recurring contribution when auto-renew is triggered. However, for memberships which are paid in instalments, we’ve had to a little bit of a work around and the auto-renew job will create a new recurring contribution for the new period, with the same number of instalment contributions to indicate the newly renewed period.
Direct Debit support
Direct Debit for Membership Extras, is a companion extension to the membership extras extension which provides support for offline direct debit processing.
As the name suggests, this extension is designed to support AUDDIS-based high volume direct debit workflows. Through this app, you can record Direct Debit mandates (together with payment plans) and create Direct Debit batches. The reports available for the Direct Debit batches are compatible to most of the AUDDIS-based electronic Direct Debit gateway such as PT-X.
Staff are able to create a new mandate or selecting an existing mandate when creating a contribution or payment plan. See the gif above for the demo of creating a Direct Debit payment plan for membership.
The Direct Debit for Membership Extras extension also includes all the required automated communications needed to fulfill Direct Debit requirements. With the extension, every Direct Debit operation is recorded as an activity. You can configure scheduled reminders based on the Direct Debit activities using the dedicated Direct Debit message templates. At the moment, the extension will capture:
New Direct Debit Recurring Payment
Update Direct Debit Recurring Payment
Direct Debit Payment Collection Reminder
Offline Direct Debit Auto-renewal
Direct Debit Mandate Update
The extension also creates some Direct Debit search actions for Contribution search and Membership search to allow staff to send out Direct Debit emails or download Direct Debit letters manually based on the search results.
Drupal Webform integration
Does it all work with webforms we hear you cry?! Yes, it does!
Apart from making a few membership-related improvements in Webform CiviCRM, we also created a companion Drupal module - Webform CiviCRM Membership Extras. If you have Membership Extras extension already installed, installing this module with the latest Webform CiviCRM will bring the magic to your webforms.
On a CiviCRM enabled webform, if customers chose to pay for their membership in instalments using any payment processors created from “Manual Recurring Payment” or “Offline Direct Debit” payment processor type, CiviCRM will understand that the customer is trying to create payment plan in instalments, therefore creates the relevant records and all instalment contributions upfront same as the results you will get from the staff screen.
Similarly, there is also a companion Drupal module for Direct Debit for Membership Extras - Webform Manual DD. This module will help webforms understand Direct Debit for Membership Extras workflow. If the webforms are Direct Debit enabled, customers will be able to choose to set up Direct Debit for their payment plans all in one submission.
The above is only the start, and over the course of the next few months we are looking to add a huge amount to membership extras. Details below:
The next huge leap we are planning in the next release will be adding subscription/ instalment management. This will allow staff to modify a members benefits during the current membership period - upgrading, downgrading or adding add-ons as needed. These will all flow through as part of the same billing order as the previous membership - i.e. as part of the same recurring contribution and hence will all be kept on the same invoice. This will lower transaction costs for organisations and tidy up billing processes.
You will be able to:
Upgrade/Downgrade/Add/Remove memberships to a member all to begin immediately but have the start and end dates align with the existing membership
Upgrade/Downgrade/Add/Remove memberships to a member all to begin in the next period
The above will work with instalments, so if you are in the middle of a period, the future instalments are adjusted automatically
The system will allow you to prorate the first payment for a membership if in instalments (automated calculation of the prorated amount coming soon)
This functionality will currently only work with the offline payment processing and wont update a subscription held with an online payment processor… yet! But we will be looking to work with others in the community get the subscription management working with online payment processors soon!
By introducing membership periods, we are attempting to provide a solution to a long standing issue in CiviMembers.
CiviCRM only keeps one set of date information for each membership a contact holds:
Member Since Date - the date when the contact firstly signs up to this membership type
Member Start Date (this is the tricky one) - the date of the first membership period in a continuous renewal
Member End Date - the date that the membership is going to expire
These might seem enough information for a membership from the first glance. However, this structure does not supply any membership period information i.e. how many periods this membership has lasted, dates and length of each period etc.
As a result, you cannot tell:
How many times a membership is renewed
Whether a specific period of the membership is paid or not and if paid, how much
Any gaps between two renewals
Also CiviCRM has some complex logic when it comes to a members changing membership types and in some cases the member, when moving from one type to another (upgrade or downgrade) can have their membership type overwritten.
The solution is to implement full support for membership “periods”. Membership extras will create a historic membership period for each membership according to the current membership data. Any membership sign-up or renewal happen after this update, will create a new membership period recording the effective duration of the sign-up or renewal. You can expand any membership record to see all the period records including their start date, end date and status.
The solution will also allow you to change the membership status (say to cancel the membership) based on whether a payment is overdue.
Webform membership start/end date calculation
This is another very powerful piece we are currently working on and looking to release soon (well as soon as we can get it merged to webform_CiviCRM...). By allowing the flexibility of setting membership start date/ end date based on existing memberships a contact holds, staff can create a range of self-serviced subscription management forms which can cover the following use cases and more:
Self service renew to different membership type at the end of the current membership period. i.e. Members must renew from junior to senior membership at the end of the year.
Add-on memberships to an existing subscription and collect the membership fee together (with the price of the new/add-on membership pro-rated).
Immediate upgrade to a new membership with a refund for any existing amounts paid on an existing membership.
We are also going to integrate SmartDebit to our Direct Debit for Membership Extras extension. This will preserve the control over Direct Debit batching process but also improving efficiency by sending batches directly from CiviCRM to SmartDebit to process the transactions.
As you would expect, all of the above will be Shoreditch compatible. If you are new to Shoreditch, here is one of the blog posts you can read about https://civicrm.org/blog/jamienovick/going-shoreditch-civicrms-new-ux-design-comes-to-life-pt-1-of-2.
For those who have heard about Shoreditch or used Shoreditch, you can find our latest alpha version of theme here: https://civicrm.org/extensions/shoreditch.
For Membership periods it's all there in the `civicrm_membership_log` table - will you be duplicating this or just exposing this in a nicer way via the UI?
Yes we considered this (at some length), but our plan for the periods is slightly different. The log table (which is slightly confusingly named - not to be confused with tables that start with log_!) acts as a slave to the renewal action. We however want to make the membership record itself a slave to the period entity.
i.e. Users will be able to change the dates of the period only and not the membership itself. The membership start and end dates will then inherit the latest end date of the periods. As such to use the log table would probably conflict and end up with some sort of circular conflict, so we thought best avoided.
Hope that makes sense. You should be able to try a recent version if you pick the most recent dev branch.
Looks really good! Does your extension also work when CiviSepa is enabled?
Honestly not tested that at this point but all we are doing is creating contributions in a more automated fashion so I would expect that it would all work nicely with CiviSepa -
If you give it a go we'd be pleased to hear back and see what we can do to get it all working together!
Wow - tonnes of documentation too - good stuff!
And thank you for all your help getting it all kicked off way-back-when!
Really appreciate all the support your gave us. :)
Very cool. Will the features have support for WordPress installations?
Yes, there's no reason the membership extra's functionality that is not Drupal modules shouldn't work with CiviCRM on Wordpress. Let us know if you have any issues on the github!