Uploaded image for project: 'CiviCRM'
  1. CiviCRM
  2. CRM-5039

Events don't always limit registrations to "max participants" setting

    Details

    • Type: Bug
    • Status: Done/Fixed
    • Priority: Minor
    • Resolution: Fixed/Completed
    • Affects Version/s: 2.2.8
    • Fix Version/s: 4.6
    • Component/s: CiviEvent
    • Labels:
      None
    • Documentation Required?:
      None

      Description

      When two or more people click the register link from the Event Info page (civicrm/event/info?reset=1&id=X) at similar times CiviCRM doesn't stop them from registering, even if they will exceed the maximum participant setting for the event.

      For example, consider an event with a maximum participant setting of 100. Let's say 1,000 people log on to the website at once and all click the register link at similar times over say a 5 minute period. Now let's say the profile and payment details take 10 minutes to fill in. All 1,000 registrants will be able to pay and register, get a confirmation email and be listed as registered participants for the event. Even though CiviEvent should have only allowed the first 100 to register.

      I think this is because CiviEvent only checks whether max participants has been reached once in the registration process, the first time they hit the "civicrm/event/register?reset=1&id=X" page. Once that page has been loaded CiviEvent doesn't check max participant status again, even when going through the rest of the registration process.

      This is an issue for large events that sell very quickly, they can easily over-sell by a large margin.

      In my opinion a Gold standard solution would be to:
      1) "quarantine" a timestamped registration place for the participant for a few minutes when they first hit the "civicrm/event/register?reset=1&id=X" page to allow them to fill in their details and proceed through payment.
      2) when payment has been successful convert the "quarantined" place into a registered place
      3) build a query in to the "civicrm/event/register?reset=1&id=X" page that checks the age of "quarantined" places and if they are older than 15 minutes delete them (or any reasonable period to allow completion of a registration)
      4) show a generic notification that the event is close to capacity when registered PLUS "quarantined" places equals the maximum participant setting and encourage the registrant to check back in a few minutes time for an opening
      5) show the user-set notification for a full event when "quarantined" places equals 0 and the maximum participants has been reached

      However, that is not a quick fix. I think the quicker solution would be to just check on every page whether max-participants has been reached and if so arrest the process of registration. This option isn't perfect but it would reduce the potential to exceed max participants. To be included in the max participants count they should have completed the entire registration process.

      Thoughts?

      Thanks,
      Matt

        Attachments

        1. payment-information-incomplete.jpg
          151 kB
          Alex C
        2. soldout_select_character_encoding.jpg
          74 kB
          Alex C
        3. sold-out-1.jpg
          288 kB
          Alex C
        4. sold-out-2.jpg
          237 kB
          Alex C

          Activity

            People

            • Assignee:
              pratiksha pratiksha
              Reporter:
              desert_rider Matthew Rackham
            • Votes:
              0 Vote for this issue
              Watchers:
              9 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Time Tracking

                Estimated:
                Original Estimate - 3 days
                3d
                Remaining:
                Remaining Estimate - 3 days
                3d
                Logged:
                Time Spent - Not Specified
                Not Specified