Answers.Body: <p>It sounds like your process of importing memberships via CSV and contributions via CSV works - except that your contributions and memberships aren't linked.</p>
  
  <p>If that's correct, I've resolved this when doing migrations as follows:</p>
  
  <ul>
  <li>Create a custom field for contributions called "external serial" or similar.</li>
  <li>Create a custom field for memberships also called "external serial".</li>
  <li>Add a serial number column to your CSV (if one doesn't already exist) before importing it as contributions/memberships.  The only important part is that each row have a unique identifier.</li>
  <li><p>After import, you can use the shared identifier to create a new CSV with just two columns - membership_id and contribution_id (as CiviCRM assigned them).  I typically would do this via SQL.  Something like this:</p>
  
  <pre><code>SELECT cc.id AS contribution_id, cm.id AS membership_id
  FROM civicrm_contribution cc 
  JOIN civicrm_value_importfieldcc_1 cvi1 ON cc.id = cvi1.entity_id
  JOIN civicrm_value_importfieldcm_2 cvi2 ON cvi1.external_serial_1 = cvi2.external_serial_2
  JOIN civicrm_membership cm ON cvi2.entity_id = cm.id
  </code></pre></li>
  <li><p>Create membership payments using this new CSV to link the memberships/contributions.  You can do that with the <a href="https://civicrm.org/extensions/api-csv-import-gui" rel="nofollow noreferrer">API CSV Import GUI extension</a> or <a href="https://civicrm.org/blog/xavier/new-tools-to-automate-the-configuration-and-stagingproduction-migration" rel="nofollow noreferrer">the command-line tool</a> that ships with CiviCRM.</p></li>
  </ul>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2016-11-07T19:25:57.703Z
Answers.LastActivityDate: 2016-11-14T15:27:59.503Z
Answers.LastEditDate: 2016-11-14T15:27:59.503Z
Answers.UserDisplayName: Jon G - Megaphone Tech
Answers.Body: <p>It seems you could do this by a batch entry of membership payments, the instructions for which are in the documentation at <a href="https://docs.civicrm.org/user/en/stable/contributions/manual-entry-of-contributions/" rel="nofollow noreferrer">https://docs.civicrm.org/user/en/stable/contributions/manual-entry-of-contributions/</a></p>
  
  <p>There is quite a bit to read in there but scroll down to "Configuring Profiles for Batch Entry of Contribution, Membership and Pledge Payments" where you should find all the information you may need.</p>
  
  <p>The process uses a reserved profile "Membership Bulk Entry" in Administer>Customise Data>Profiles>Reseved Profiles</p>
  
  <p>Hope this helps.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2016-11-07T18:39:36.650Z
Answers.Text: I saw the batch entry - but it is missing the all important part uploading the batch from a csv.  As it stand you have to manually select each 'member' by typing their name.
  
  If you have a list of member ids, in a spreadsheet  (downloaded from a report showing the member ID) then dealing with the data 'offline' has to be the fastest way of dealing with thousands on renewal.
Answers.UserDisplayName: Alan Fuller
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2016-11-05T18:29:07.123Z
Answers.LastActivityDate: 2016-11-05T18:41:25.640Z
Answers.LastEditDate: 2016-11-05T18:41:25.640Z
Answers.UserDisplayName: peterb
Body: <p>Hi this is our first season with CiviCRM. Our data is uploaded and getting to grips with updating processes.</p>
  
  <p>Our process is annual membership collected in cash and banked in tranches.</p>
  
  <p>The user front end is not really appropriate for the bulk process, manually looking up a member, renewing the membership with a contribution - which is slow enough - but then we need to go to the contribution to record a custom field ( banking id ) for later reconciliation.</p>
  
  <p>A lot faster process would be to work off a downloaded spreadsheet, removing non paid members, and then uploading the contributions &amp; membership.</p>
  
  <p>But, as far as I can see, simply uploading the contributions through import process does not renew that membership - and bulk uploading memberships do not link to contributions.</p>
  
  <p>I guess many orgs bulk upload contribution / memberships - how is this best achieved?</p>
  
Tags: <import><contributions>
Title: Bulk Import of Membership Dues
ThreadText: # Bulk Import of Membership Dues
  
  (Asked by: username_0 on 2016-11-05)
  
  Hi this is our first season with CiviCRM. Our data is uploaded and getting to grips with updating processes.
  
  Our process is annual membership collected in cash and banked in tranches.
  
  The user front end is not really appropriate for the bulk process, manually looking up a member, renewing the membership with a contribution - which is slow enough - but then we need to go to the contribution to record a custom field ( banking id ) for later reconciliation.
  
  A lot faster process would be to work off a downloaded spreadsheet, removing non paid members, and then uploading the contributions & membership.
  
  But, as far as I can see, simply uploading the contributions through import process does not renew that membership - and bulk uploading memberships do not link to contributions.
  
  I guess many orgs bulk upload contribution / memberships - how is this best achieved?
  
  **Tags:** import, contributions
  
  
  ---
  
  ## 2 answers
  
  ### Answer by username_1 on 2016-11-07. Score: 6
  
  It sounds like your process of importing memberships via CSV and contributions via CSV works - except that your contributions and memberships aren't linked.
  If that's correct, I've resolved this when doing migrations as follows:
  
  Create a custom field for contributions called "external serial" or similar.
  Create a custom field for memberships also called "external serial".
  Add a serial number column to your CSV (if one doesn't already exist) before importing it as contributions/memberships.  The only important part is that each row have a unique identifier.
  After import, you can use the shared identifier to create a new CSV with just two columns - membership_id and contribution_id (as CiviCRM assigned them).  I typically would do this via SQL.  Something like this:
  SELECT cc.id AS contribution_id, cm.id AS membership_id
  FROM civicrm_contribution cc 
  JOIN civicrm_value_importfieldcc_1 cvi1 ON cc.id = cvi1.entity_id
  JOIN civicrm_value_importfieldcm_2 cvi2 ON cvi1.external_serial_1 = cvi2.external_serial_2
  JOIN civicrm_membership cm ON cvi2.entity_id = cm.id
  
  Create membership payments using this new CSV to link the memberships/contributions.  You can do that with the API CSV Import GUI extension or the command-line tool that ships with CiviCRM.
  
  
  ---
  
  ### Answer by username_2 on 2016-11-05. Score: 2
  
  It seems you could do this by a batch entry of membership payments, the instructions for which are in the documentation at <https://docs.civicrm.org/user/en/stable/contributions/manual-entry-of-contributions/>
  
  There is quite a bit to read in there but scroll down to "Configuring Profiles for Batch Entry of Contribution, Membership and Pledge Payments" where you should find all the information you may need.
  
  The process uses a reserved profile "Membership Bulk Entry" in Administer>Customise Data>Profiles>Reseved Profiles
  
  Hope this helps.
  
  > **Comments:**
  > **username_0**: I saw the batch entry - but it is missing the all important part uploading the batch from a csv.  As it stand you have to manually select each 'member' by typing their name.  If you have a list of member ids, in a spreadsheet  (downloaded from a report showing the member ID) then dealing with the data 'offline' has to be the fastest way of dealing with thousands on renewal.  
  
  ---
  
  