How to get $form_id based on $form_state for custom form rule?
I think the easiest way was to pass $form ArrayObject which has $form_id present. So:

'form' =&gt; array('type' =&gt; 'form', 'label' =&gt; t('Form')),


needed to be added next to $form_state parameter in hook_rules_action_info and the final function looks like:

/**
 * Action: Submit the form.
 *
 * @param ArrayObject $form
 *   A reference to the form array of the form for which the event
 *   was triggered.
 * @param ArrayObject $form_state
 *   A reference to the form state array of the form for which the
 *   event was triggered.
 */
function rules_forms_action_submit($form, $form_state) {
  $form_id = $form['form_id']['#value'];
  $form_state = (array)$form_state;
  drupal_form_submit($form_id, $form_state);
}


For submitting entity form, check: How to programatically submit an entityform?