How to pre-populate fields on a node creation form based on fields from Profile2 module? There is a content type ("Job Listing") that a business account can use to list job openings, and a Profile2 profile for each business that contains the business's address, organization name and taxonomy terms such as industry type.

95% of the businesses that will list a job posting will use the same information; I could just use the profile information, but I need to account for the 5% that might want to change the job listing form. For example, the job might be in another state or country and that needs to be accounted for. I think the the best way to handle this situation is to have the same fields in both the profile and job listing form but allow the business change the information in the job listing form.

It would make sense to pre-populate the job listing form with business profile information as the default. How do I best do this? I was going to use Rules but I can't find a single option for a Rule before the original node creation form is created.

Should I just use hook_form_alter() to access the profile information on orginal node creation and use that information to set the default values?
I created a hook_form_FORM_ID_alter() function in a helper module that tests to see if the node has a NID and if so if it is not in the operation preview. Then I populate the default values of the form with the companies profile information so they can change it later.

// We need to set the default of the Job Listing fields on a new Job Listing form */
function helper_form_job_listing_node_form_alter(&amp;$form, &amp;$form_state) {
  // test if node for has been assigned a NID. If not then populate fields with default data */
  if (empty($form['nid']['#value']) &amp;&amp; (!isset($form['#node']-&gt;op))){
    $profile = profile2_load_by_user ($form['uid']['#value'], 'business_profile'); 
    // We currently do not know what the profile language is */
    // Organization name
    if (isset($profile-&gt;field_job_organization['und'][0]['value'])){
      $form['field_job_organization']['und'][0]['value']['#default_value'] =  $profile-&gt;field_job_organization['und'][0]['value'];
    }
    // Set the default address
    if (isset($profile-&gt;field_resume_address['und'][0]['thoroughfare'])) {
      $form['field_resume_address']['und'][0]['#address']['thoroughfare'] = $profile-&gt;field_resume_address['und'][0]['thoroughfare'];
    }
    if (isset($profile-&gt;field_resume_address['und'][0]['locality'])) {
      $form['field_resume_address']['und'][0]['#address']['locality'] = $profile-&gt;field_resume_address['und'][0]['locality']; 
    }
    if (isset($profile-&gt;field_resume_address['und'][0]['administrative_area'])) {
      $form['field_resume_address']['und'][0]['#address']['administrative_area'] = $profile-&gt;field_resume_address['und'][0]['administrative_area'];                  
    }
    if (isset($profile-&gt;field_resume_address['und'][0]['country'])) { 
      $form['field_resume_address']['und'][0]['#address']['country'] = $profile-&gt;field_resume_address['und'][0]['country'];  
    }
    if (isset($profile-&gt;field_resume_address['und'][0]['premise'])) {
      $form['field_resume_address']['und'][0]['#address']['premise'] = $profile-&gt;field_resume_address['und'][0]['premise']; 
    }
    if (isset($profile-&gt;field_resume_address['und'][0]['postal_code'])) {
      $form['field_resume_address']['und'][0]['#address']['postal_code'] = $profile-&gt;field_resume_address['und'][0]['postal_code']; 
    }  
  }                                                              
}