Skip to content
Diosh Lequiron
data-architecture

Cross-constituency queries reduced from 4 days to 40 seconds, 40 hours/month reconciliation eliminated, 680 duplicate records resolved, Board reporting now reproducible and documented

Six Databases, One Organization: CRM Consolidation for a Healthcare Nonprofit

By Diosh LequironHealthcare Nonprofit (Anonymized)May 2026
Key Outcomes

Cross-constituency queries reduced from 4 days to 40 seconds

40 hours/month reconciliation eliminated

680 duplicate records resolved

Board reporting now reproducible and documented

A healthcare nonprofit running six separate databases for six different constituencies — donors, volunteers, patients, program participants, partner organizations, and staff — discovered the cost of that fragmentation when it tried to answer a simple question: "Which of our donors have also volunteered this year?" The question required a four-day manual cross-reference across three systems. The four-month consolidation that followed reduced that query to forty seconds and eliminated six reconciliation processes that had collectively consumed forty hours of staff time per month.

The organization had grown through program expansion rather than infrastructure design. Each new program had arrived with its own data requirements, its own reporting needs, and often its own database — sometimes a new system, sometimes a spreadsheet that had grown too complex to remain a spreadsheet. The databases were not chosen to be incompatible; they became incompatible through the accumulation of independent decisions made by program managers who needed tools to run their programs and had no mandate to consider organizational data architecture. The result was six sources of truth for six partial views of the organization's reality, and no way to see the whole.

The challenge: design and implement a unified data architecture that preserved the operational distinctions between constituencies while making cross-constituency relationships visible and queryable — without interrupting any of the organization's ongoing programs during the transition.


Starting Conditions

The organization served three counties, operated five programs, and managed relationships with approximately 4,200 individuals in distinct roles — some in multiple roles simultaneously. A single individual might be a donor, a former patient who had become a program volunteer, and a participant in a health education program. Across six databases, that person existed as three to six separate records, depending on which programs they were connected to.

Database inventory at engagement start. A donor management system used by the development team — 1,800 donor records, three years of giving history, integrated with the organization's email marketing platform. A volunteer coordination system used by the programs team — 340 active volunteers, 800 historical volunteers, with hours tracking and training certifications. A patient management system used by clinical staff — subject to healthcare privacy requirements, 2,100 patient records. An education program database built in spreadsheets by the original program coordinator — 680 current participants, 1,400 historical. A partner organization database in a second spreadsheet, 120 organizations. An HR system for staff records, 45 employees. No two systems shared an identifier. No two systems used the same name format. Two systems had conflicting definitions of "active" for their respective constituencies.

What the organization could and could not report. The organization could report accurately within any single system. It could tell you the total donations received in a calendar year, the total volunteer hours logged in a program, the number of active patients by county. It could not tell you the total value of all in-kind contributions (hours plus dollars) from individuals who had contributed in both forms. It could not tell you which donors had also been program participants — a relationship relevant to understanding donor motivation and to grant reporting for some funders who wanted to see constituent-to-donor conversion rates.

Privacy constraints. Patient records were subject to healthcare privacy regulations that limited how they could be stored, accessed, and linked to other records. The consolidation architecture had to preserve the patient database's regulatory isolation while making non-protected fields — general participation indicators — available for cross-system analysis where permitted. This constraint ruled out a simple all-in-one CRM solution and required a federated architecture.


Structural Diagnosis

Three structural problems explained why six independent databases had produced systematic organizational blindness.

No entity model for the organization as a whole. The six databases each modeled a single constituency: donors, volunteers, patients. None modeled the entity that mattered most to the organization — the individual human who might have relationships with the organization in multiple capacities simultaneously. The absence of a shared person-entity meant that every cross-constituency question required manually locating the same human across multiple records and making a judgment call about whether two records referred to the same person. This is a data architecture problem, not a query problem. Adding better reporting tools to six systems that do not share an entity model produces better reports from six partial perspectives, not answers to cross-system questions.

Duplicate maintenance without deduplication process. Because the systems could not recognize the same person appearing in multiple databases, every update to a person's information had to be made in every database where they appeared. Staff who discovered that a volunteer had moved would update the volunteer system. The same person's donor record, if they were also a donor, would retain the old address until someone noticed the discrepancy — which might be never, or might be when a thank-you letter was returned undeliverable. The organization estimated that 12 to 18 percent of its records contained outdated contact information because the duplication maintenance burden had never been resourced. Conventional fixes — reminding staff to update all systems — are ineffective because the cognitive burden of tracking which person is in which system exceeds what distributed human attention can reliably maintain.

Reporting that required manual assembly. Monthly board reports required the development director to manually extract data from three systems, reconcile the numbers, and assemble a combined view. The process took twelve hours per month. The number produced — total organizational engagement across all constituencies — was calculated slightly differently each month because the reconciliation was a judgment call, not a formula. The board was reviewing a number that was not reproducible and whose methodology was not documented. Auditors who asked to see the calculation behind a reported number would receive a spreadsheet reconstruction assembled after the fact, not a query run against a system of record.


The Intervention

Four months. The sequence was determined by the constraint that no operational system could be disrupted during migration and that patient data privacy had to be maintained throughout. The architecture had to be built incrementally, with each system continuing to operate during the migration of its data into the unified structure.

Phase 1: Entity Model Design (Weeks 1-3)

What was built: A universal person entity model — a single structural representation of an individual that could hold all the information the organization needed regardless of which programs or roles the person was connected to. The model defined: a canonical record for each person (name, contact information, unique identifier), a set of role objects (donor record, volunteer record, program participant record, patient indicator with privacy-compliant flag only), and a relationship layer connecting persons to organizations and to other persons where relevant.

Why this came first: The entity model was the foundation on which every subsequent decision rested. Choosing a CRM platform before designing the entity model produces a CRM whose data structure reflects the platform's assumptions rather than the organization's actual constituencies and relationships. Several platforms were evaluated during this phase; the evaluation criteria were architectural — which platform could implement the entity model as designed — not feature-based.

The mechanism: Defining the person as the central entity, with roles as attributes rather than as separate records, made cross-constituency relationships structurally visible. A person who was both a donor and a volunteer was not two records in two systems; they were one record with both role attributes populated. The question "how many people donated and also volunteered this year" became a filter, not a reconciliation.

Phase 2: Data Migration and Deduplication (Weeks 2-10)

What was built: A migration process that imported all six databases into the unified architecture, resolved duplicate records, and preserved relationship history. Deduplication was a structured decision process: automated matching on name, email, and phone identified probable duplicates; a data team reviewed each probable match and confirmed or separated; matched records were merged with a documented audit trail. Patient records were migrated with a privacy-preserving transformation — the clinical database retained its regulatory isolation, but a participation flag was created in the unified system indicating that a person had a patient record, without exposing any protected information.

Why this depended on Phase 1: The migration could not begin until the target architecture was defined. Migrating data into an undefined structure produces data in need of a second migration. The entity model from Phase 1 was the specification to which migration was written.

The mechanism: Deduplication resolved 680 duplicate records — 16 percent of the total person records across all systems. For each merge, a primary record was designated and the secondary record's history was attached as a relationship attribute. No historical data was destroyed; it was reorganized. This is the structural mechanism that made the resulting database authoritative — it did not discard ambiguous history, it resolved it with documented decisions.

Constraint introduced: The deduplication review process required fourteen hours of staff time from four people who knew the organization's relationships well enough to make confident merge decisions. This was the largest staff investment of the engagement. It could not be automated without incurring a meaningful false-merge rate on records that were similar but distinct.

Phase 3: Reporting Architecture (Weeks 8-14)

What was built: A reporting layer built on the unified database — saved queries for the board report (reproducible with the same methodology every month), a constituent engagement dashboard showing total individual engagement across all programs and roles, a donor analysis that included volunteer hours as in-kind contribution for funders who accepted that framing, and a data quality alert system that flagged likely outdated contact information based on email bounce rates and returned mail.

Why this came last: Reporting on bad data produces confident-looking wrong answers. The reporting layer was built after the data was unified and deduplicated. Every query was documented — the methodology behind each number was written into the report template so that any future staff member or auditor could reproduce the calculation.


Results

Cross-constituency queries: from 4 days to 40 seconds. The initial four-day query that prompted the engagement — "which donors also volunteered this year?" — ran in forty seconds against the unified database. This was not the most important result, but it was the most visible demonstration of the structural change.

40 hours per month of reconciliation eliminated. The six-system reconciliation processes — data pulled from multiple systems and assembled for reporting — were replaced by queries against a single source of record. Forty hours per month of staff time was reallocated to program delivery.

Board reporting methodology documented and reproducible. Monthly board reports are now generated by a saved query run against the same database with the same methodology every month. The number is the same number regardless of who runs the report. Auditors can see the query.

680 duplicate records resolved. Sixteen percent of the organization's person records were duplicates. Resolving them produced a more accurate picture of the organization's actual reach — the total unique individuals served was lower than the previous combined count had implied, which was operationally significant for grant reporting that counted unique individuals.

Counterfactual. Organizations that maintain fragmented data systems typically face an escalating reconciliation burden as they grow — more programs, more systems, more staff time spent assembling the picture the board needs. The inflection point where the reconciliation burden exceeds available staff capacity arrives without warning, because the burden grows gradually and each individual reconciliation task seems manageable until the aggregate is not. The unified architecture eliminated the growth trajectory of that burden.


The Transferable Lesson

The organization did not have a reporting problem. It had an entity model problem — it had never defined what the central object of its data system was.

The diagnostic pattern to look for: when an organization cannot answer a cross-functional question without a multi-day manual assembly process, the organization does not have a query problem or a tool problem. It has a data architecture problem — its systems model the organization's functions rather than the organization's constituencies. Functions produce outputs that can be reported in isolation. Constituencies have relationships across functions that can only be reported when the data model reflects the constituency as its central entity.

The intervention sequence — entity model first, migration second, reporting third — is the only sequence that works. Organizations that start with reporting tools or CRM platform selection before defining their entity model will build a new system organized around the new platform's assumptions, then discover that the new system cannot answer the cross-functional questions the old systems could not answer. The question is not "which CRM should we use?" The question is "what is the central object our data model needs to represent?" Answer that question first, then choose the platform that can implement the answer.

Interested in similar results?