Saving a unpublished node without validation I have site with a content type that has a large number of fields on it.  

I would like to allow users to start to create nodes, but not have to fill out all of the fields in one sitting.  Partially completed nodes don't have to be published, but they do need to be saved in the database.

Is is possible to save the node in an uncompleted state without the validation rules running.  I am mainly interested in required fields not being required, unless the node is published.

When users finish populating nodes, the validation rules should run when the node is published.

Are there any ways to accomplish this workflow?
Another option here is to add a custom validation function to force validation to run, and then also have a custom submit handler to clear any errors produces and save the node.

The code here is mostly taken from this question but this question and this post have also helped.

function mymodule_form_alter(&amp;$form, &amp;$form_state, $form_id) {
    switch($form_id) {
        case 'my_form_id':

            $form['actions']['draft'] = array(
                '#type' =&gt; 'submit',
                '#value' =&gt; t('Save draft'),
                '#weight' =&gt; '9',
                '#submit' =&gt; array('save_draft_submit'),
                '#validate' =&gt; array('save_draft_validate'),
                '#attributes' =&gt; array(
                    'class' =&gt; array('cancel'), // add the class cancel will skip any clientside validation
                ),
                //'limit_validation_errors' =&gt; array(), // this should be enough to skip validation however does not work for me
            );

            break;
    }
}

function save_draft_validate($form, &amp;$form_state) {
    // Set as unpublished.
    $form_state['values']['status'] = 0;
    // Force validation.
    $errors = &amp;drupal_static('form_set_error', NULL, TRUE);

}

function save_draft_submit($form, &amp;$form_state) {
    // clear error messsages
    drupal_get_messages();
    // save the node
    node_form_submit($form, $form_state);
    $form_state['redirect'] = 'node/'.$form_state['nid'].'/edit';
}