diff --git a/includes/admin.inc b/includes/admin.inc
index 68fabec..a6dcf21 100644
--- a/includes/admin.inc
+++ b/includes/admin.inc
@@ -39,6 +39,17 @@ function og_subgroups_prop_settings() {
     ),
     '#default_value' => variable_get('og_subgroups_propagate_members', array()),
   );
+ $form['propagte_user']['og_subgroups_propagate_join_override'] = array(
+    '#type' => 'radios',
+    '#title' => t('Override Group Joining Criteria'),
+    '#description' => t('Override the joining criteria for parent/child groups in the propagation path. This will subscribe members to groups regardless of whether they are closed or invite only.'),
+    '#options' => array(
+      'none' => t('No override'),
+      'partial' => t('Override, but admin approval still required for each group'),
+      'full' => t('Full override'),
+    ),
+    '#default_value' => variable_get('og_subgroups_propagate_join_override', "none"),
+  );
   $form['propagte_user']['og_subgroups_propagate_members_unsubscribe'] = array(
     '#type' => 'checkboxes',
     '#title' => t('Unsubscribing Members'),
diff --git a/og_subgroups_prop.install b/og_subgroups_prop.install
index f7ae687..02116ac 100644
--- a/og_subgroups_prop.install
+++ b/og_subgroups_prop.install
@@ -8,6 +8,7 @@ function og_subgroups_prop_uninstall() {
   $variables = array(
     'og_subgroups_propagate_content',
     'og_subgroups_propagate_members',
+    'og_subgroup_propagate_join_override',
     'og_subgroups_propagate_members_unsubscribe',
   );
   
diff --git a/og_subgroups_prop.module b/og_subgroups_prop.module
index afc98d6..9e6f721 100644
--- a/og_subgroups_prop.module
+++ b/og_subgroups_prop.module
@@ -122,10 +122,11 @@ function og_subgroups_prop_propagate_user($op, $gid, $uid, $args = array()) {
 function _og_subgroups_prop_propagate_user_subscribe($group, $user, $args) {
   // Make sure user isn't already a member
   if (!isset($user->og_groups[$group->nid])) {
-    // Make sure the group isn't invite-only or closed
-    if ($group->og_selective != OG_INVITE_ONLY && $group->og_selective != OG_CLOSED) {
+    // Check group isn't invite-only or closed (or overridden)
+    $override_selective = variable_get('og_subgroups_propagate_join_override', 'none');
+    if (($group->og_selective != OG_INVITE_ONLY && $group->og_selective != OG_CLOSED) || $override_selective =='full' || $override_selective =='partial') {
       // Determine if the membership should be active or not
-      $is_active = ($group->og_selective == OG_OPEN) ? 1 : 0;
+      $is_active = ($group->og_selective == OG_OPEN || $override_selective == 'full') ? 1 : 0;
       // Save the user's subscription to the group
       og_save_subscription($group->nid, $user->uid, array('og_subgroups' => TRUE, 'is_active' => $is_active));
     
