Secure Data Access Setup
Registered the Azure App and configured OAuth 2.0 and API permissions for Dynamics 365.
33,638+
Records migrated
48+
Hours of continuous migration, zero downtime
100%
Data accuracy after migration
Cornerstone managed a large volume of CRM data inside Microsoft Dynamics 365, including contacts, companies, deals, activities, and attachments. The company needed all of it moved into HubSpot while keeping the same data structure, the same relationships, and the same usability it already had.
Cornerstone's Dynamics 365 environment held years of CRM history. Moving it to HubSpot meant solving three problems at once: the size of the data, the accuracy of every connection inside it, and the length of time the migration itself would take.
Enterprise ABM tooling is priced for enterprise budgets. A mid-market company evaluating it is asked to commit a six-figure annual line item before running a single play, which is why most of them never start.
Contacts, companies, and deals needed to stay precisely connected, which meant building custom properties in HubSpot that matched Dynamics 365 field by field.
The migration needed more than 48 hours of processing with no downtime, and attachments stored in SharePoint had to be reorganized before they could move at all.
"Before HubSpot, we were living kind of in chaos with Post-it notes. Every lead, every patient type, and every renewal had to be tracked manually, and our front desk was spending more time managing spreadsheets than focusing on patients."
HubXpert built the migration in four connected stages: secure access into Dynamics 365, clean and mapped data, the migration itself, and the cloud infrastructure needed to run it without stopping.
An Azure App with OAuth 2.0 authentication supplied the Client ID, Client Secret, and Tenant ID needed for secure
API permissions under the Microsoft Graph API and Dynamics 365 API were set up to reach both CRM and SharePoint data.
JavaScript scripts authenticated through OAuth 2.0, pulled data from Dynamics 365, and handled pagination across the full data set.
Python scripts processed the raw CRM data for consistency, accuracy, and proper formatting ahead of migration.
Custom properties were created in HubSpot to mirror the original Dynamics 365 fields, so no relationship in the data was lost.
Deal closing dates converted from Bangladesh Standard Time to Eastern Standard Time, and deal amounts were normalized for accuracy.
21,307 contacts and 12,331 companies transferred with their full set of properties, with no data lost in the process.
More than 300 deal properties moved over, including tasks, emails, notes, and appointments, all with their original associations intact.
A Google Cloud VM handled more than 48 hours of continuous processing without disruption.
SharePoint folders were reorganized, attachments extracted, and everything uploaded into HubSpot in a structured way.
Retry mechanisms and validation steps caught errors along the way and kept the migration running efficiently.
The migration ran across four connected stages over 2.5 months, with the actual data transfer running continuously once it started.
Registered the Azure App and configured OAuth 2.0 and API permissions for Dynamics 365.
Cleaned CRM data in Python and mapped custom properties to match Dynamics 365 fields.
Migrated contacts, companies, and deals, then linked relationships with Node.js scripts.
Ran the 48-hour cloud migration and moved SharePoint attachments into HubSpot.
Cornerstone's full CRM history moved into HubSpot with every record, relationship, and attachment intact, and with no meaningful downtime along the way.
33,638+
Records migrated
48+
Hours of continuous migration, zero downtime
100%
Data accuracy after migration
Every record moved with 100% accuracy. All CRM data migrated successfully with no loss or corruption, and the correct relationships among contacts, deals, and companies stayed intact.
HubSpot is more usable than the system it replaced. Structured data and automation cut down on manual work and reduced the chance of errors going forward.
The migration ran fast and stayed reliable. Cloud automation kept downtime to a minimum and processing times low, even while moving data at this scale.
"HubXpert made our D365-to-HubSpot migration smooth, fast, and stress-free. They handled the complexity professionally, stayed within budget, and communicated exceptionally well. Highly recommended."
Not in this case. The 48-plus hour migration ran on a dedicated Google Cloud VM, which kept the process continuous without disrupting daily CRM use.
Custom properties in HubSpot were mapped to mirror the original Dynamics 365 fields, and Node.js scripts handled the relationship linking automatically.
SharePoint folders were reorganized first, then attachments were extracted and uploaded into HubSpot in a structured way, rather than moved as-is.
33,638-plus total records, including 21,307 contacts, 12,331 companies, and more than 300 deal properties covering tasks, emails, notes, and appointments.
About 2.5 months from setup to completion, including the 48-plus hour continuous processing window for the core data transfer.