Trusted by Intuit · SaaS Direct Canada 🍁Book a Discovery Call →

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.

3 in 1
Main Account, Project and Service Unit in One GL String
3
Days Early: Final Load August 21 Against an August 24 Target
72
Customers Carried Forward, from a List of About 565
1
Business Day to Fix the One Post-Delivery Variance

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.

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 consideredWhy it was set aside
SmartList exports instead of a SQL backupExports 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 firstExact-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 departmentsSet at transaction level. Many transactions are split across projects, so the tag had to live on each line.
Project codes as QuickBooks Online projectsEach project can belong to only one customer, and some GP projects were tied to several customers.
Tags or sub-accounts for project codesSuggested by the client. We recommended classes instead, for cleaner reporting across both dimensions.
Parent and child classes, service unit over projectOur 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 unusedThe 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

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:

01

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.

02

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.

03

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.

04

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.

05

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
Migrated

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.

Archived or left out

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.

  1. April 14First discovery call
  2. April 22Assessment on a current SQL backup
  3. April 28Findings and fixed quote
  4. May 29Agreement signed
  5. June 17Timeline revised for GP access
  6. June 22Freeze moved for July close
  7. June 23Extraction package delivered
  8. July 9Chart of accounts and classes approved
  9. July 21First load delivered
  10. August 14Last working day in GP
  11. August 21Final load delivered (plan: Aug 24)
  12. August 24Fund balance fix; archive delivered
  13. 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.

Book a migration review →

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

PDF · 2 pages · 238 KB

The problem, the solution, how we validated it and the result, on two pages.

Download PDF

Full Case Study

PDF · 11 pages · 326 KB

The complete account: starting position, the options we set aside and why, obstacles and how we resolved them, validation and timeline.

Download PDF

Frequently 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.

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.