CRM migration
Field-level mapping, validation, and rollback between WennSoft and HubSpot. We move data and schema; workflows are rebuilt natively in HubSpot.
WennSoft
Source
HubSpot
Destination
Compatibility
9 of 10
objects map 1:1 between WennSoft and HubSpot.
Complexity
BStandard
Timeline
5–10 business days
Overview
WennSoft is a purpose-built field service and construction management platform running on Microsoft Dynamics GP — its data lives in the GP database (SY01400, SOP10200, etc.), not behind a documented public API. HubSpot CRM models contacts, companies, deals, and tickets as its core objects, with a custom object framework for equipment and service records that have no native equivalent. We map WennSoft service calls to HubSpot tickets, customers to HubSpot companies and contacts, equipment to a HubSpot custom object, and job costing entries to deal line items — preserving cost codes, technician assignments, and extended pricing matrix rows as custom fields. The migration runs against the Great Plains database directly using scoped read access, extracting via SQL with your IT team present. Workflows, triggers, and GP automation logic do not migrate and must be rebuilt in HubSpot workflows. Delta pickup covers any service calls or time entries modified between the GP snapshot and HubSpot go-live.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a WennSoft object lands in HubSpot, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
WennSoft
Service Call
HubSpot
Ticket
1:1WennSoft service calls map 1:1 to HubSpot tickets. The call number becomes the ticket ID, call status maps to ticket status (Open/In Progress/Closed), and the primary customer location becomes the ticket's associated company. Problem type, service type, and work-zone assignments migrate as custom ticket properties. Original call-create timestamps are preserved on the HubSpot ticket record.
WennSoft
Customer
HubSpot
Company + Contact
many:1WennSoft customer master records contain both company-level fields (name, address, billing terms) and primary contact fields (phone, email, main technician). We split these: company-level fields map to a HubSpot company record; the primary contact maps to a HubSpot contact linked to that company. WennSoft allows multiple locations per customer — each location becomes a separate company in HubSpot or a HubSpot company with multiple addresses.
WennSoft
Location
HubSpot
Company (address subset) or Location custom object
1:1HubSpot's Company object stores multiple addresses natively under the address tabs. WennSoft locations with their own address, contact, and equipment inventory map to HubSpot company address records, preserving the location name as a company nickname. If location-specific service histories are needed, we create a Location custom object linked to the parent company via a company association.
WennSoft
Equipment
HubSpot
Equipment custom object + Company association
1:1HubSpot has no native equipment entity. We create an Equipment custom object in HubSpot with fields for equipment ID, name, model, serial number, install date, and meter readings. The custom object is associated to the HubSpot company representing the customer location via a company-Equipment association. Equipment service history from WennSoft's Equipment Manager module migrates as Equipment Activity custom events.
WennSoft
Employee / Technician
HubSpot
Contact
1:1WennSoft employee records (tech IDs, names, roles, certifications, work-zone assignments) migrate as HubSpot contacts with a custom Employee_Type__c property set to 'Technician'. HubSpot login access for technicians depends on your HubSpot seat tier — internal employees who don't need CRM access are migrated as contacts only. Role and certification fields map to custom pick-list and text properties.
WennSoft
TimeTrack Entry
HubSpot
Task
1:1TimeTrack rows (technician, date, duration in minutes, billable flag, cost code, GL account) map to HubSpot tasks with a custom Duration_Minutes__c property, Billable__c flag, and Cost_Code__c reference. The task owner is set to the matched HubSpot contact representing the technician. GL account mapping is stored as a custom property for accounting reconciliation — it does not post to a HubSpot-native accounting module since HubSpot has none.
WennSoft
Job Costing Record
HubSpot
Deal + Line Item
1:1WennSoft job costing tracks labor cost, parts cost, and overhead by cost code against a work order. We map each job costing layer to a HubSpot deal with line items representing cost layers (Labor, Parts, Overhead). Cost codes and GL accounts are preserved as custom line-item properties. The deal amount reflects the billed value from WennSoft; actual cost from job costing is stored as a separate custom deal field for margin reporting.
WennSoft
Extended Pricing Matrix
HubSpot
Custom Pricing_Matrix__c custom object or custom deal properties
1:1WennSoft's Extended Pricing Matrix assigns billing rates based on call type, problem type, equipment type, and markup percentage — stored as matrix rows, not flat fields. We normalize these as a Pricing_Matrix__c custom object linked to service types, or flatten high-frequency rate combinations into custom deal properties. Criteria-based pricing rules themselves cannot migrate and must be rebuilt as HubSpot workflow conditions.
WennSoft
Unbilled Costs Report
HubSpot
Custom Unbilled_Costs__c custom object or deal property
1:1HubSpot has no native unbilled costs tracking — service calls with unposted costs in WennSoft (call status not Complete) have no direct equivalent. We migrate these as a custom Unbilled_Costs__c object linked to the corresponding ticket, or as custom deal properties on in-progress deals, so the billing team can follow up post-migration without losing the record.
WennSoft
Attachment / File
HubSpot
HubSpot Files
1:1Documents attached to service calls, equipment records, and customer locations are downloaded from the Great Plains file store or SharePoint integration and re-uploaded to HubSpot Files associated with the matching ticket, company, or custom equipment record. File size limits and inline image handling follow HubSpot's standard attachment constraints.
| WennSoft | HubSpot | Compatibility | |
|---|---|---|---|
| Service Call | Ticket1:1 | Fully supported | |
| Customer | Company + Contactmany:1 | Fully supported | |
| Location | Company (address subset) or Location custom object1:1 | Fully supported | |
| Equipment | Equipment custom object + Company association1:1 | Fully supported | |
| Employee / Technician | Contact1:1 | Fully supported | |
| TimeTrack Entry | Task1:1 | Fully supported | |
| Job Costing Record | Deal + Line Item1:1 | Fully supported | |
| Extended Pricing Matrix | Custom Pricing_Matrix__c custom object or custom deal properties1:1 | Mapping required | |
| Unbilled Costs Report | Custom Unbilled_Costs__c custom object or deal property1:1 | Fully supported | |
| Attachment / File | HubSpot Files1:1 | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
WennSoft gotchas
Invoice posting locks billing rates permanently
Unposted Costs and Unbilled Costs require separate extraction
Integration complexity and frequent glitches slow migrations
No public bulk export API documented
Dynamics GP edition gating may block migration paths
HubSpot gotchas
Marketing Contacts billing model is migration-critical
Feature tier gating is not visible until onboarding
Mandatory onboarding fees inflate year-one cost
HubSpot CSV importer cannot migrate engagements or attachments
Custom objects require Enterprise and a pre-existing schema
Pair-specific challenges
Migration approach
Document WennSoft data model and GP database schema
FlitStack AI begins with a discovery call to map your WennSoft data model against HubSpot's object structure. We identify all service call types, pricing matrix configurations, equipment record schemas, and time-tracking structures. We work with your IT team to document the Great Plains database tables relevant to the migration — key tables include service call headers, line items, customer master, employee master, equipment records, and TimeTrack journals. We deliver a GP schema summary and a proposed HubSpot schema plan (custom object definitions, property names, and association types) before any data is extracted.
Extract data from Great Plains database via scoped SQL access
With your DBA or IT team present, we connect to the Great Plains database using scoped read-only credentials and execute the extraction queries. Service calls, customer records, equipment data, employee records, time entries, and job costing rows are exported to staged CSV files. The extended pricing matrix is exported as a separate matrix file and normalized — criteria-based rate combinations are converted into Pricing_Matrix__c custom object rows. All export operations are read-only; no GP records are modified. We flag any records with incomplete required fields for your team's review before the import phase begins.
Create HubSpot custom objects and properties, then load core records
We create the Equipment__c and Pricing_Matrix__c custom objects in HubSpot, along with all required custom properties on the Ticket, Company, Contact, Deal, and Task objects — including cost_code__c, gl_account__c, billing_locked__c, and work_zone__c. Custom object associations are configured to link Equipment to Company. We then run the import: companies first (for foreign-key resolution), then contacts, then tickets, then equipment, then tasks. Owner assignment resolves by email match against HubSpot users; any unmatched owners are flagged to your team before the import commits.
Run a test migration with field-level diff on a representative record set
A test migration runs against a 100–500 record slice spanning service calls across all call types, equipment records, time entries, and job costing entries. We generate a field-level diff comparing the source GP values against the HubSpot values for every mapped property. You verify the extended pricing matrix normalization, the equipment-to-company association, technician-to-contact owner mapping, and the unbilled costs custom object completeness. Approval of the diff report gates the full migration run. We iterate on any mapping corrections before proceeding.
Execute full migration with delta-pickup and post-migration validation
The full migration loads all records into HubSpot using batched API calls with HubSpot's rate limit headers monitored throughout. A delta-pickup window of 24–48 hours captures any service calls, time entries, or job costing records modified in GP between the extraction snapshot and go-live. We run a post-migration validation report comparing record counts, owner resolution rates, and a spot-check of extended pricing values. Audit logs are delivered for every operation; one-click rollback is available if reconciliation identifies data integrity issues. Your team retains read access to the GP database for 30 days post-migration for historical reference.
Platform deep dives
WennSoft
Source
Strengths
Weaknesses
HubSpot
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across WennSoft and HubSpot.
Object compatibility
2 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
WennSoft: Not publicly documented.
Data volume sensitivity
WennSoft doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during WennSoft to HubSpot migration scoping. Not seeing yours? Book a call.
Walk through your WennSoft to HubSpot migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave WennSoft
Other ways to arrive at HubSpot
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.