Rules not marking all registrations to complete when commerce order is complete I am using the RedHen raiser profile which comes with Drupal Commerce and entity registration set up and ready to go. In my set up users can 'register for an race/run event' The process is they choose the number of 'tickets' they want. Based on this number entity registration shows that number of registration forms. User completes the registration forms, then hits the checkout process which tallies up the number of registrations for the order.

A single order can have multiple registrations.

I have a rule to mark all registrations to 'Complete' when the order is finished.

When I use the 'When an order is first paid in full' event only one registration from the order gets marked as complete.

When I use the 'Completing the checkout process' event all registrations are marked as complete.

From what I understand using 'Completing the checkout process' isn't safe because technically a user could get a failed credit card transaction and the completing the checkout process would return as true.

Below is the export of my rule using the completing the checkout process.

{ "commerce_registration_complete_upon_full_payment" : {
"LABEL" : "Set Registrations to Complete upon Full Payment",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"TAGS" : [ "Commerce Registration" ],
"REQUIRES" : [ "commerce_registration", "commerce_checkout" ],
"ON" : { "commerce_checkout_complete" : [] },
"DO" : [
  { "commerce_registration_set_state" : {
      "commerce_order" : [ "commerce-order" ],
      "registration_state" : { "value" : { "complete" : "complete" } }
    }
  }
]}}


My question is: How can I mark all registrations in the order to complete when the order is truly complete?
Have you experienced the issue with the failed card? I run an event website with entity registration and commerce and we process an average of 20 registrations a day and haven't had that problem yet. 

But if you want to be certain you could utilize hook_commerce_checkout_complete, look at the order payment details and check that the order has been marked paid successfully. If so, invoke the rule or use entity query to lookup all registrations related to the order_id and mark them complete.