diff --git a/conditional_fields.module b/conditional_fields.module
index 23b8cb2..64991fe 100644
--- a/conditional_fields.module
+++ b/conditional_fields.module
@@ -234,8 +234,21 @@ function conditional_fields_element_info_alter(&$types) {
 function conditional_fields_element_after_build($element, &$form_state) {
   // Ensure that the form being built is an entity.
   if (!isset($form_state['complete form']['#entity_type'], $form_state['complete form']['#bundle'])) {
+    // There can be entities attached in lower level (maybe full tree traversal is needed to discover entities?)
+    foreach ($form_state['complete form'] as $complete_key => $complete_elem) {
+      if (!is_array($complete_elem)) {
+        continue;
+      }
+      if (isset($form_state['complete form'][$complete_key]['#entity_type'], $form_state['complete form'][$complete_key]['#bundle'])) {
+        $form_state['complete form']['#entity_type'] = $form_state['complete form'][$complete_key]['#entity_type'];
+        $form_state['complete form']['#bundle'] = $form_state['complete form'][$complete_key]['#bundle'];
+        break;
+      }
+    }
+    if (!isset($form_state['complete form']['#entity_type'], $form_state['complete form']['#bundle'])) {
     return $element;
   }
+  }
 
   // Avoid processing fields in fields_ui administration pages.
   if (drupal_substr($form_state['complete form']['#form_id'], 0, 9) == 'field_ui_') {
