Moving from the Nonprofit Success Pack to Agentforce Nonprofit is not an upgrade. The two products model a constituent differently at the foundation, so this is a data migration project with a reconciliation problem attached. Done well, you also get to delete years of workarounds. Done badly, your year-end totals stop matching and nobody trusts the new org. This guide is the sequence we use, in the order that keeps the numbers correct.

Decide this before you touch anything

Two decisions shape everything that follows. Make them in writing, with the finance lead in the room.

What is the reconciliation standard? Pick the reports that must match the old system exactly, and name them. Usually it is total raised by fiscal year, total by designation or fund, donor counts, and the recurring giving roster. Everything else can be approximate. If you do not set this boundary, you will chase every discrepancy in a 20 year gift history and never finish.

What is the cutover window? Find eight weeks with no campaign, no audit, and no year-end appeal. That window is your hard constraint, and it usually sets the project timeline more than the technical work does.

Do not migrate history you cannot defend. Many organizations carry gift records from systems two generations back, with no source documents and no way to verify them. Decide early which years come across as detail and which years come across as summary only. This one decision can remove months of reconciliation.

New org or migrate in place?

Almost always a new org. Here is the honest comparison.

New orgIn place
Old customizationsLeft behind unless you deliberately bring themCome with you, including the ones nobody understands
Person AccountsEnabled cleanly from the startEnabling Person Accounts in a mature org is disruptive and hard to reverse
Managed packagesNone. No npsp, npe01, npe03 namespacesNPSP packages stay installed alongside the new objects
Risk to productionLow. Users stay on the old org until you switchHigh. You are changing the system people use today
IntegrationsAll must be repointed at onceCan be moved gradually
CostHigher up front, cheaper afterwardsCheaper up front, and you keep paying for the mess

The Person Account row is the decisive one. Agentforce Nonprofit is built on Person Accounts, and turning them on in a long-lived org with a large Contact base is a change you cannot cleanly undo. A new org avoids the whole question.

The one common exception is a small, young NPSP org with almost no customization and one integration. There, an in-place rebuild can work.

The object mapping table

This is the core of the migration plan. Keep it as a live document, because the field-level detail underneath each row is where the work actually is.

NPSPAgentforce NonprofitWatch out for
Contact on a Household Account Person Account: Account with the Person Account record type Fields split across Account and Contact in NPSP land on one record. Decide which value wins where both exist
Household Account Business Account plus PartyRelationshipGroup with Type set to Household NPSP created households automatically. Here you create them deliberately, so decide which households are worth keeping
Household membership AccountContactRelation between the group account and the person account's contact Primary member and salutation logic has to be rebuilt
Organization Account Business Account Straightforward. Usually the easiest load in the project
npe5__Affiliation__c AccountContactRelation Role and current or former status map to different fields
npe4__Relationship__c ContactContactRelation plus PartyRoleRelationship NPSP auto-created the reciprocal record. You now manage both directions explicitly
Donation Opportunity GiftTransaction Stage values become status values. Anything not Closed Won needs a decision
npe01__OppPayment__c GiftTransaction records linked to a GiftCommitment The biggest conceptual change. NPSP splits pledge and payment across two objects. Get this wrong and you double count
npe03__Recurring_Donation__c GiftCommitment and GiftCommitmentSchedule Schedules must line up with the payment processor, or the next charge fails or duplicates
General Accounting Unit GiftDesignation Load these first. Gifts cannot be allocated to designations that do not exist yet
Allocation GiftTransactionDesignation Percentage versus amount splits behave differently. Reconcile totals per designation
Soft credits GiftSoftCredit, and GiftDefaultSoftCredit for recurring Never let soft credits inflate hard credit totals in your parity reports
Tribute and honoree fields GiftTribute Often stored inconsistently in NPSP. Expect manual cleanup
Campaign and appeal codes Campaign plus OutreachSourceCode Source codes are a real object now. Use them instead of free text
Batch Gift Entry GiftBatch and GiftEntry Historical batches are usually not migrated. Bring the resulting gifts, not the batches
NPSP rollup fields Data Processing Engine definitions and DonorGiftSummary Recalculate rather than migrate. Migrated totals hide load errors
npsp__Address__c ContactPointAddress Seasonal and mailing address logic needs redesign
Email and phone fields ContactPointEmail and ContactPointPhone Preferred and opt-out flags move here. Coordinate with your email tool
Program Management Module Program, ProgramEnrollment, Benefit, BenefitAssignment Usually a redesign, not a mapping, because most PMM orgs bent the model

Step 1: Inventory and triage customizations

Before any data work, list every custom field, validation rule, flow, Apex class, report, and dashboard in the NPSP org. Then put each item in exactly one of three piles.

  • Port. It encodes something specific to your organization that the platform does not provide.
  • Replace. The newer model does this as standard. Designations, soft credits, tributes, source codes, and outcome tracking are the usual candidates.
  • Delete. Nobody uses it, or it existed to work around an NPSP limitation that no longer applies.

In most orgs we assess, the delete pile is the largest, and the replace pile is the one that saves the most money. Do this triage before you scope the build, because the scope is the port pile plus the migration, and nothing else.

Step 2: Clean and dedupe in the source

Fix data in NPSP, not after the load. Once gift history hangs off a duplicate Person Account, merging is far more expensive and far more likely to lose an audit trail.

  1. Run duplicate detection on constituents and merge. Expect the pass rate to be worse than you think, especially where a household and an individual both received mail.
  2. Standardize and validate addresses. Bad addresses become bad ContactPointAddress records.
  3. Find gifts with no designation, no campaign, or no date and decide the default for each case before the load, not during it.
  4. Resolve deceased, do-not-contact, and opt-out flags. These must survive the move exactly, because getting them wrong has legal and reputational consequences.
  5. Reconcile your source totals now. Produce the parity reports from NPSP and freeze them as the target numbers.

Step 3: Build constituents and households

Load in dependency order, and keep the NPSP record id in an external id field on every new record. You will need it for every later step and for support questions years from now.

  1. Enable Person Accounts in the new org before anything else.
  2. Load organization business accounts.
  3. Load individuals as Person Accounts.
  4. Create household business accounts, then a PartyRelationshipGroup for each with Type set to Household. Use the Subtype and other group fields where they carry meaning for your programs.
  5. Create AccountContactRelation records to place people in households, and set the roles you rely on for salutations and mailings.
  6. Load ContactPointEmail, ContactPointPhone, and ContactPointAddress records, with the primary and preferred flags set deliberately.
  7. Load relationships as ContactContactRelation plus PartyRoleRelationship, remembering that you now write both directions.

Note that creating groups needs the Group Membership permission set, and merging them needs the Merge and Split Groups system permission in a cloned permission set. Sort permissions out before the load rather than during it.

Step 4: Load designations, then gifts

Order matters. A gift cannot point at a designation that does not exist.

  1. Create GiftDesignation records from your General Accounting Units. Take the chance to retire funds nobody has used in five years.
  2. Load GiftTransaction records. Map amount, date, payment method, campaign, and source code. Keep the NPSP Opportunity id as an external id.
  3. Create GiftTransactionDesignation records from your allocations. Then reconcile the total per designation against the frozen NPSP figure before you go further.
  4. Load GiftSoftCredit records. Verify that your parity report still shows the same hard credit total, because soft credit errors show up here as inflated revenue.
  5. Load GiftTribute records for in-honor and in-memory gifts.

The pledge and payment question deserves its own attention. In NPSP a pledge is an Opportunity with multiple Payment records. In the newer model a pledge is a GiftCommitment with a GiftCommitmentSchedule, and each received payment is a GiftTransaction linked back to that commitment. If you load both the pledge and the payments as Gift Transactions, you double your revenue. We cover the correct modelling in the fundraising implementation guide.

Step 5: Rebuild recurring giving

This is the step with the most operational risk, because real money moves on a schedule and donors notice mistakes immediately.

  1. Extract every active Recurring Donation with its amount, frequency, next charge date, designation, and payment method.
  2. Create a GiftCommitment for each, with a GiftCommitmentSchedule that reproduces the frequency and next date exactly.
  3. Set default designations with GiftDefaultDesignation so generated transactions land in the right fund without manual work.
  4. Use GiftDefaultSoftCredit where a recurring gift should credit an influencer, such as a board member who secured it.
  5. Coordinate with your payment processor. Tokens, customer ids, and schedules have to line up. Agree exactly which system owns the schedule after cutover.
  6. Test with a small live cohort before you move everyone. A declined card on migration weekend must produce a retry, not a silent lapse.

Never cut over recurring giving inside three days of a scheduled charge run. If the timing goes wrong you either miss a month of revenue or charge donors twice. Both are recoverable. Neither is a good week.

Step 6: Reach rollup and report parity

Do not migrate rollup values. Recalculate them in the new org using Data Processing Engine definitions and the standard summary objects, then compare against your frozen NPSP numbers. Migrated totals paper over load errors, and you will find the errors later at the worst possible moment.

Reconcile in this order, and stop when a level fails rather than pushing on:

  1. Total raised per fiscal year, all funds.
  2. Total per designation per fiscal year.
  3. Donor count and new donor count per year.
  4. Top 100 donors by lifetime giving, matched name by name.
  5. Active recurring giving: donor count, monthly value, next charge dates.

Then rebuild the board pack and the audit reports. Have the finance lead sign off in writing that the new org produces the same numbers. That signature is what lets you switch off the old system.

Step 7: Repoint integrations

Every system that touches donation data needs work, because the objects it wrote to no longer exist. Typical list:

  • Payment processor and online giving forms. They must create Gift Transactions and respect commitments.
  • Email and marketing tools. Contact Point objects now hold email and consent. Map opt-out carefully.
  • Accounting. Your journal entries or subledger feed keys off designations and gift dates.
  • Wealth screening and prospect research. Results now belong on the philanthropic assessment and indicator objects rather than in custom fields.
  • Event, volunteer, and forms tools. Anything writing Contacts should be checked against the Person Account model.

Use Named Credentials and log every callout, so that when something fails at 2am on cutover weekend you can see what happened. Our callout framework guide covers the pattern.

Step 8: Cut over

  1. Freeze the source. Announce a hard stop for data entry in NPSP, with a named person enforcing it.
  2. Run the delta load. Move everything created or changed since your last full extract.
  3. Reconcile again. Same reports, same standard. This is a gate, not a formality.
  4. Switch users. Activate users in the new org, deactivate write access in the old one.
  5. Repoint live integrations and watch the first transactions land.
  6. Keep the old org read-only for a full reporting cycle. At least one quarter, ideally through your next audit. It costs little and it answers the questions that only surface later.

Five mistakes that cause rework

  • Loading gifts before designations. You end up with unallocated revenue and a manual repair job.
  • Treating NPSP payments as separate gifts. The classic double counting error. Pledges are commitments, receipts are transactions.
  • Skipping dedupe because the timeline is tight. The timeline gets tighter later, and by then the duplicates own gift history.
  • Porting customizations without triage. You pay to rebuild workarounds for problems the new platform already solved.
  • No named reconciliation standard. Without it, the project has no definition of done and the finance team never signs off.

Frequently asked questions

Is there a Salesforce tool that migrates NPSP to Agentforce Nonprofit automatically?

There is no single button that converts an NPSP org into an Agentforce Nonprofit org. The data models differ at the foundation, so migration is a mapping, extract, transform, and load project. Standard tooling such as Data Loader and third party ETL tools does the moving, but the mapping and reconciliation are design work.

Should we migrate into a brand new org or convert the one we have?

A new org in almost every case. Agentforce Nonprofit is built on Person Accounts, and enabling Person Accounts in a mature org with a large Contact base is disruptive and hard to reverse. A new org also lets you leave old customizations behind instead of porting them.

What happens to our NPSP recurring donations?

Each active Recurring Donation becomes a Gift Commitment with a Gift Commitment Schedule, and future payments become Gift Transactions linked to that commitment. The delicate part is aligning schedules and tokens with your payment processor so the next charge neither fails nor runs twice.

Do we have to migrate all of our gift history?

No, and often you should not. Decide which years come across as full detail and which come across as summary only. Organizations frequently carry history from systems two generations back that cannot be verified against source documents. Cutting that scope removes a large amount of reconciliation work.

How do we prove the new org is correct?

Freeze a set of parity reports from NPSP before you extract: total raised by fiscal year, totals by designation, donor counts, top donors by lifetime giving, and the active recurring roster. Recalculate the same figures in the new org and get written sign off from your finance lead before switching users.

When is the worst time to cut over?

During a capital campaign, in the weeks around a year-end appeal, during an audit, or within a few days of a scheduled recurring charge run. Pick a window with none of those and treat it as a fixed constraint on the project plan.