LFCU connected KeyStone core banking data to HubSpot and left Microsoft Dynamics
The Customer
LFCU is a credit union. Its member records, loans and share accounts live in its KeyStone core banking system. Before this project, its marketing campaigns and marketing data ran in Microsoft Dynamics.
LFCU wanted to move marketing onto HubSpot and have the campaigns respond to what members actually do with their accounts. That meant the core system’s person, loan and share files had to reach the marketing platform.
The Challenge
A credit union’s most useful marketing data sits in its core. Which members hold a loan, which hold a share account, and what has changed are the facts that decide which message a member should get. Those facts lived only in the core.
The new platform had no native way to represent loans or shares. A contact record can hold a person, but a member with three accounts needs those accounts as their own records, linked to the person. And the core data arrives as person, loan and share files, so something had to read those files, interpret the fields and keep the platform in step.
The Solution
We built a pipeline from the KeyStone files into HubSpot, with custom objects to hold the account data, and ran the onboarding and training alongside it.
The mapping came first. We mapped the Person, Loans and Shares files to platform objects and fields, then reviewed the mapping with LFCU field by field. Fields were marked green where the mapping was confirmed, yellow where we wanted the client to confirm the source field, and red where the file had no matching field and a workflow would need to fill it.
On the platform we set up custom objects, including a custom Loan object and a custom Share object, so each account is its own record associated with the member.
The pipeline itself runs on Tray and MongoDB. We created an LFCU sandbox, installed MongoDB, and set up a skeleton Tray project with its own Git repository. We built the Mongo database, tables and indexes with a metadata workbook that documents them, and wrote a field interpreter script and an upsert script with default mappings. On top of that we built the Person, Loans and Shares file syncs and an account object sync and query.
We packaged the solution as an installer, one for internal use and one for production, and installed it into the customer’s own environment. Two rounds of user acceptance testing ran in the sandbox before the move to production, followed by production testing and the initial sync, which we started and monitored over the following days.
Two expansions followed launch. Employer records in the person table are stored as a separate “other entity”, so we filtered the sync to handle them. Members’ addresses are coded as either mailing or residential depending on how the account was opened, so we wrote a script that uses the mailing address where that is the right one, then re-synced.
In parallel, the onboarding team ran six HubSpot onboarding calls and a series of training calls, and the roadmap closed with every Dynamics campaign and its data migrated and every marketing automation campaign running on data triggered from KeyStone. A further KeyStone expansion followed in 2024.
What They Got
LFCU’s marketing team now works from one platform that knows what each member holds. A loan or a share account is a record of its own, tied to the member, and a campaign can trigger from changes in those records.
The campaigns that had lived in Dynamics run on the new platform, so there is one place to build, send and report. The sync runs in LFCU’s own environment, with the field mappings reviewed by the client and the database documented in a workbook the team can read.
The onboarding and training calls meant the staff who run the campaigns were trained on the platform as the integration went live.
Wrapping Up
Our standard on a core banking integration is that the client reviews and approves every field mapping before a record moves, the pipeline is installed in the client’s own environment, and nothing reaches production until it has passed acceptance testing in a sandbox. LFCU got that, along with the move off Dynamics. Lynton now builds AI-native websites on open infrastructure; see our current work at /case-studies.