Success Story
Three Dimensions in One Account Number: Moving a Nonprofit off Dynamics GP to QuickBooks Online Advanced
In Becoming Independent’s Dynamics GP ledger, the account number carried the whole reporting model: main account, project and service unit in one string. Here is how SaaS Direct pulled them apart and rebuilt them in QuickBooks Online Advanced, after locations, projects and parent classes each fell short.


Customer Overview
Becoming Independent (BI) is a nonprofit in Santa Rosa, California, founded in 1967, providing education, employment and living services for adults with intellectual and developmental disabilities. It is a single entity with a July to June fiscal year.
Dynamics GP was hosted by a third-party provider and reached over remote desktop. Around it, Bill.com handled payables, invoicing and payments and held most of the AP and AR detail, and ADP payroll posted into GP as summary journals. The move was introduced by the client’s advisory accounting firm.
In GP, BI used the general ledger, payables, receivables and fixed assets. Its account numbers followed one structure throughout: a main account, a 4-digit project code and a 2-digit service unit, and that string carried the organization’s reporting model.
Organization Snapshot
- Location
- Santa Rosa, California
- Organization
- Nonprofit (disability services)
- Founded
- 1967
- Fiscal year
- July to June
- Migration
- Dynamics GP → QBO Adv.
- GP hosting
- Third-party, remote desktop
The Challenge
In GP, account 61610-0638-16 (Donations) is three facts in one: 61610 is the main account, 0638 the project and 16 the service unit. Reporting by service unit and project depended on those segments.
QuickBooks Online has no equivalent. Strip the project and service unit off and multiple GP accounts share the same main account number, so the chart of accounts has to be consolidated. And the two stripped dimensions still need a home that works on every line of a transaction, because many transactions are split across projects.
From: Microsoft Dynamics GP
- Hosted by a third-party provider
- Account string: main account, project, service unit
- GL, AP, AR and fixed assets
- Most AP and AR detail held in Bill.com
- Payroll journaled in from ADP
To: QuickBooks Online Advanced
- Main accounts only, duplicates consolidated
- Project and service unit carried as classes
- January 2024 onward at transaction level
- Cleaned customer and vendor lists
- Earlier years in a reconciled Excel archive
This is not unique to Becoming Independent. Any GP customer whose account segments encode projects, departments or programs will meet this. QuickBooks Online gives you a flat account list and a small set of tagging tools, each with its own limit.
What Becoming Independent needed
Both dimensions on every line
Project and service unit reportable at transaction line level, not just per transaction.
A clean chart of accounts
Duplicate and inconsistently named accounts consolidated under one name each.
Room for Bill.com
A ledger Bill.com could connect to once the migration was done.
Is this your situation?
Check your GP account string before you pick a QuickBooks structure
- Your GP account numbers carry project, department or program segments
- Transactions are split across those segments at line level
- The same main account appears under several names
- Your subledger detail lives partly outside GP
If two or more apply, the class and account design is the critical path of your migration, not the data load.
Designing the Destination
Seven alternatives were considered and set aside before the design was settled on July 9.
| Option considered | Why it was set aside |
|---|---|
| SmartList exports instead of a SQL backup | Exports do not capture the underlying data structure or relationships, which raises the risk of scope gaps when the data is restructured. |
| Loading Bill.com customers and vendors into QBO first | Exact-name matching would create duplicates, and GP transactions reference GP records. GP went first, with Bill.com to connect afterwards. |
| Project codes as locations or departments | Set at transaction level. Many transactions are split across projects, so the tag had to live on each line. |
| Project codes as QuickBooks Online projects | Each project can belong to only one customer, and some GP projects were tied to several customers. |
| Tags or sub-accounts for project codes | Suggested by the client. We recommended classes instead, for cleaner reporting across both dimensions. |
| Parent and child classes, service unit over project | Our first proposal, on July 6. A child class can sit under only one parent in QuickBooks Online, so the same project could not appear under several service units; we withdrew it on July 9. |
| Carrying all of about 565 customers and inactivating the unused | The client reviewed the list against the transaction data and carried forward 72. |
Chosen: one class name carrying project and service unit
Main accounts became the chart of accounts, consolidated under one name per number. Service unit and project were concatenated into a single class name carrying both number and name; project code 0000 mapped to the service-unit class alone. Customer-level and item-level classes were dropped, and AP lines with no vendor were tagged to a single catch-all vendor the client named. Agreed in writing on July 9.
One GP account string, and where each piece went in QuickBooks Online
61610
Chart of accounts; duplicates consolidated
0638
Combined into the class name
16
Combined into the class name
The Solution
The engagement ran on an assessment of the real database, written decisions, and two loads around a freeze. Five working disciplines carried it:
Assessment on the Real Database
A SQL Backup, Not Exports
We assessed a current SQL backup of the GP company database rather than exports, so the account string and its segments could be decomposed before quoting.
Extraction Package
With Written Discussion Points
The extraction package, with data through April 30, 2026, was delivered June 23 with written discussion points on the account string and duplicate accounts, followed by class conflicts on June 29, and reviewed with the client on June 30.
Design Decisions
Approved in Writing
Between July 1 and July 9 the client returned final lists for accounts, classes, projects and customers, and approved the chart of accounts and class design in writing.
Two Loads and a Freeze
Review Load, Then Final Load
The first load was delivered July 21. August 14 was the last working day in GP, the freeze ran August 17 to 21, and the final load was delivered August 21.
Archive and Close-Out
History Reconciled
The historical archive, June 2020 through December 2023, was delivered August 24 with the fund-balance fix. The client confirmed on August 31.
Commercial structure
Paid complexity assessment against a SQL backup of the GP company database, then a fixed-fee quote with two history windows. The client chose January 2024 onward and added the historical archive as a separately priced option.
Obstacles, and How We Resolved Them
Seven things went wrong or needed a decision. How a migration partner handles those is a better guide than a clean story, so here they are in full.
Getting into a hosted GP
Validation needed access to the GP interface, which sat with a third-party hosting provider. It required a paid user license, which the client declined at first, then MFA, then a remote desktop setting before files could be copied out.
Resolution. Access working by June 18. The timeline was revised on June 17 because of the access delay.
The freeze clashed with month-end
The revised freeze fell during the client’s July close.
Resolution. At the client’s request, the last day in GP moved to August 14, the freeze to August 17 to 21, and delivery to August 24.
Remote access dropped mid-project
In mid-July our remote desktop connection to GP stopped resolving. The client’s updated connection file restored it on July 23.
Resolution. The April 30 aging validation could not run while access was down; the final load was validated with agings at August 14, 2026.
AP aging did not tie by vendor
The AP aging netted to zero in total but showed open balances on individual vendors.
Resolution. The entry was split to the relevant vendors on July 28 and the client confirmed the aging.
Opening balances without classes
The opening entry at December 31, 2023 was consolidated, so its lines could not carry classes and showed as “not specified”.
Resolution. Explained and accepted at review. Transactions from January 2024 carry classes.
A reporting request we declined
The client asked for sub-classes so reports would show totals by service unit.
Resolution. We declined: it would have required significant rework. The workaround is to export the report and subtotal.
Fund balance variance after final load
Two net asset accounts were correct at December 31, 2023 but differed at August 14, 2026.
Resolution. Fixed August 24, the next business day.
Validation
At extraction, the GP AP aging differed from the trial balance, and the client agreed to investigate. During transformation we found AP transactions with no vendor and, at the client’s direction, tagged them to a catch-all vendor it named.
After the final load, the client reported that everything looked good apart from the two fund balance accounts, which were fixed the next business day.
Checks across the two loads
- Trial balance, GP against QBO, at December 31, 2023
- Balance sheets and income statements
- AR and AP agings at December 31, 2023 (first load) and August 14, 2026 (final load)
- Client review of each load
- Archive: validated against the trial balance with no issues
2024onward
January 1, 2024 through August 14, 2026 at transaction level; opening balances at December 31, 2023; consolidated chart of accounts; 72 customers and a cleaned vendor list; classes combining project and service unit.
2020 to 2023archived
Archived: June 1, 2020 through December 31, 2023, in an Excel archive validated against the trial balance. Not carried: employee records, which stay in ADP, and customer-level and item-level classes.
The Results
Live in QuickBooks Online Advanced
Becoming Independent took over its QuickBooks Online Advanced file on August 24 and confirmed on August 31 that everything looked good.
Both Dimensions on Every Line
Classes carry both project and service unit on every transaction line, from January 2024 onward.
A Consolidated Chart of Accounts
Main accounts under one name each, and a customer list cut from about 565 to 72 before migration, not after.
Final Load Three Days Early
The final load was delivered August 21 against the revised August 24 target, with earlier years in a reconciled archive.
Project timeline
The project slipped before it sped up: access to the hosted GP environment took about two weeks, and the client moved the freeze to protect its July close. The final load still arrived three days ahead of the revised target.
The one reporting gap, totals by service unit, is handled by exporting and subtotalling. Bill.com was to be connected to the new ledger after the migration.
- April 14First discovery call
- April 22Assessment on a current SQL backup
- April 28Findings and fixed quote
- May 29Agreement signed
- June 17Timeline revised for GP access
- June 22Freeze moved for July close
- June 23Extraction package delivered
- July 9Chart of accounts and classes approved
- July 21First load delivered
- August 14Last working day in GP
- August 21Final load delivered (plan: Aug 24)
- August 24Fund balance fix; archive delivered
- August 31Client confirms
Why It Worked
Working from the Database, Not Exports
SmartList exports would not have shown the underlying structure and relationships; the SQL backup did.
Ruling Out Each QuickBooks Home Early
Locations, projects and parent classes were each ruled out, with a stated reason, before any load ran.
A Client Who Cleaned Its Own Lists
The client cut about 565 customers to 72 before migration, not after.
Moving Dates for the Client’s Close
Shifting the freeze two weeks protected July month-end; the final load still came in early.
Changing Course Early
When our first class design hit QuickBooks Online’s one-parent limit, we replaced it on July 9, before any data was loaded.
Is Your Reporting Model Hiding in Your GP Account String?
Talk to us before you pick a QuickBooks structure. We will map every segment to a place it can actually live.
Download
Download the Case Study
Keep this story as a PDF. The case study summary is built for sharing with your team; the full case study covers every design decision, obstacle and validation step.
Case Study Summary
The problem, the solution, how we validated it and the result, on two pages.
Download PDFFull Case Study
The complete account: starting position, the options we set aside and why, obstacles and how we resolved them, validation and timeline.
Download PDFFrequently asked questions
How do you map a Dynamics GP account segment string into QuickBooks Online Advanced?
Split each segment to where it can live. In Becoming Independent’s GP ledger, account 61610-0638-16 carried the main account, a 4-digit project code and a 2-digit service unit. The main account went to the chart of accounts, with duplicates consolidated under one name, and the project and service unit were combined into a single class name carried on every transaction line.
Why aren’t GP projects a fit for QBO Projects when one project ties to many customers?
In QuickBooks Online, each project can belong to only one customer. Some of Becoming Independent’s GP projects were tied to several customers, so QBO Projects could not hold them, and project codes went into classes instead.
Why use classes instead of locations for line-level project splits?
Locations and departments are set once per transaction, and many of Becoming Independent’s transactions were split across projects, so the tag had to live on each line. Classes work at line level. A parent-and-child class design was also ruled out, because a child class can sit under only one parent, so the final design used one class name carrying both project and service unit.
Should you migrate from a SQL backup or SmartList exports?
For Becoming Independent we assessed a current SQL backup of the GP company database. SmartList exports do not capture the underlying data structure or relationships, which raises the risk of scope gaps when the data is restructured, and the backup let the account string be decomposed before quoting.
How do you clean a 500+ customer list before GP → QBO?
Clean it before migration, not after. Becoming Independent reviewed its list of about 565 customers against the transaction data and carried forward 72, so the cleanup happened before anything was loaded.
About SaaS Direct
SaaS Direct is a financial systems migration specialist helping businesses and accounting firms transition between legacy and modern platforms. With a proprietary migration code repository spanning 88+ platforms and a disciplined delivery methodology, SaaS Direct handles the technical complexity of accounting transitions so finance teams and advisory firms don’t have to.
Is Your Reporting Model Hiding in Your GP Account String?
Talk to us before you pick a QuickBooks structure. We will map every segment of your account string to a place it can actually live. The destination in this story is QuickBooks Online Advanced, not Intuit Enterprise Suite.
Related: Dynamics GP data migration · QuickBooks Online migrations · All success stories · Barrett Firearms GP story · Data migrations
Book a Dynamics GP Migration Review
Pick a time that suits you. You will speak with a migration lead who has moved this exact path, not a call center.
