CRM migration
Field-level mapping, validation, and rollback between KulaHub and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .
KulaHub
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
5 of 8
objects map 1:1 between KulaHub and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
3-5 weeks
Overview
KulaHub stores all business entities as flat Contact records with no separate Account or Company object; Microsoft Dynamics 365 Sales uses an Account-Contact hierarchy where business organizations live as Accounts and individual people live as Contacts. We extract the KulaHub contact list, infer company-level records where domain or company-name fields are populated, create Dynamics 365 Accounts first, then link the converted Contacts with a Parent Account lookup. KulaHub Activity logs (calls, emails, meetings, tasks) migrate as Dynamics 365 activity records with the WhoId and WhatId resolved against the migrated Contact and Account records. Email campaign history, GDPR unsubscribe flags, and form submission data transfer as contact-level custom fields or linked entity records because KulaHub does not expose a separate Campaign or Form object in its documented schema. KulaHub's lack of a public API developer portal and absence of self-service bulk export means data extraction relies on KulaHub-assisted processes; we scope this constraint during discovery and factor it into the project timeline. Workflows, automations, and GDPR consent logs do not migrate as executable code; we deliver a written inventory of these for the customer's admin to rebuild in Dynamics 365.
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.
Source platform
KulaHub platform overview
Scorecard, SWOT, gotchas, and pricing for KulaHub.
Destination platform
Microsoft Dynamics 365 Sales platform overview
Scorecard, SWOT, gotchas, and pricing for Microsoft Dynamics 365 Sales .
Data migration guide
The complete Microsoft Dynamics 365 Sales migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Destination checklist
Microsoft Dynamics 365 Sales migration checklist
Pre- and post-cutover tasks for moving onto Microsoft Dynamics 365 Sales .
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a KulaHub object lands in Microsoft Dynamics 365 Sales , including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
KulaHub
Contact
Microsoft Dynamics 365 Sales
Account and Contact (restructure required)
1:manyKulaHub stores all business entities as flat Contact records. We extract every KulaHub contact and infer a parent Account from the company_name or domain field. Where KulaHub contacts share a domain and company_name, we create a single Dynamics 365 Account and link each contact with a Parent Account lookup. Where no company data exists, the contact becomes a Dynamics 365 Contact without an Account (a Person Account if the destination org is enabled for that type). The original KulaHub contact_id is preserved in a custom field kulahub_id__c on both Account and Contact for reconciliation.
KulaHub
Activity: Calls, Emails, Meetings, Tasks
Microsoft Dynamics 365 Sales
PhoneCall, EmailMessage, Event, Task
1:1KulaHub activity logs attached to a Contact migrate to Dynamics 365 activity records with the WhoId (Contact) and WhatId (Account or Opportunity) resolved at migration time. We load activities chronologically to preserve timeline order. Call disposition, duration, and recording reference URLs migrate to custom PhoneCall fields. Meeting locations and attendee lists map to Event Location and EventRelation records. Email body and tracking pixels (opens, clicks) migrate to EmailMessage with the associated Task for timeline display.
KulaHub
Email Campaign
Microsoft Dynamics 365 Sales
Campaign and CampaignMember (linked)
1:manyKulaHub Campaign records include campaign name, status, send date, open and click tracking, and GDPR unsubscribe preferences. We create a Dynamics 365 Campaign for each KulaHub campaign and link the recipients as CampaignMember records with MemberStatus set to Responded (for opened/clicked) or Sent (for no engagement). Because Dynamics 365 Campaign does not natively store open/click metrics per member, we write these as custom fields on CampaignMember. GDPR unsubscribe state per contact migrates to HasOptedOutOfEmail on the Contact record.
KulaHub
Email Template
Microsoft Dynamics 365 Sales
EmailTemplate
1:1KulaHub email templates (subject, body, merge fields) migrate to Dynamics 365 EmailTemplate. We extract the HTML body and map KulaHub merge field tokens to Dynamics 365 tokens (e.g., firstname becomes {{Contact.FirstName}}). If the template uses a non-standard token syntax, we flag it for manual rewrite during the post-migration review.
KulaHub
Document/Attachment
Microsoft Dynamics 365 Sales
Note and SharePoint (linked)
1:1Documents attached to KulaHub contacts are blob records with a foreign-key relationship. We extract each document, re-associate it with the corresponding Dynamics 365 Contact or Account record via Note (for small files under 2 MB) or SharePoint document location (for larger files). If the destination org has SharePoint integration enabled, we create the appropriate document location and store the original filename and MIME type in the Note or SharePoint record.
KulaHub
Task/Reminder
Microsoft Dynamics 365 Sales
Task
1:1KulaHub Tasks are assigned to specific users and linked to contacts. We map tasks 1:1 to Dynamics 365 Task, preserving the assigned-user mapping by resolving the KulaHub owner email against the Dynamics 365 User table. Due dates, priorities, and task status map to the corresponding Dynamics 365 Task fields. Any KulaHub task without a matching Dynamics 365 User is held in a reconciliation queue for the customer's admin to provision.
KulaHub
User
Microsoft Dynamics 365 Sales
User
1:1KulaHub users appear in activity logs and task assignments. We export the full user list first and resolve each by email match against the destination Dynamics 365 User table. If the customer plans to provision a new Dynamics 365 tenant as part of this migration, the admin creates the corresponding users before the production migration phase begins. Inactive users in KulaHub are migrated as inactive users in Dynamics 365 to preserve historical assignment references.
KulaHub
Form Submission
Microsoft Dynamics 365 Sales
Custom Entity or Contact Custom Fields
lossyKulaHub captures website enquiries via forms linked to contacts, but the form-field schema is not publicly documented. We request a sample export of form-submission data during discovery, identify the key-value pairs, and map them to Contact custom fields or a custom entity if the submission data is relational. Unmapped fields are held in a staging table and presented to the customer for manual mapping before the production run.
| KulaHub | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Contact | Account and Contact (restructure required)1:many | Fully supported | |
| Activity: Calls, Emails, Meetings, Tasks | PhoneCall, EmailMessage, Event, Task1:1 | Fully supported | |
| Email Campaign | Campaign and CampaignMember (linked)1:many | Fully supported | |
| Email Template | EmailTemplate1:1 | Fully supported | |
| Document/Attachment | Note and SharePoint (linked)1:1 | Fully supported | |
| Task/Reminder | Task1:1 | Fully supported | |
| User | User1:1 | Fully supported | |
| Form Submission | Custom Entity or Contact Custom Fieldslossy | 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.
KulaHub gotchas
API has no public documentation or developer portal
No self-service bulk export or documented rate limits
Deleted record restoration costs £80/hour with 30-day window
Contact form field schema is not publicly documented
GDPR preference data portability not confirmed
Microsoft Dynamics 365 Sales gotchas
Professional tier 15-table custom table limit blocks migrations
October 2024 pricing increase applies at renewal for all customers
Custom fields must be created in the UI before API writes
Power Platform request limits apply to bulk migrations
Activity records orphaned to inactive owners fail silently
Pair-specific challenges
Migration approach
Discovery and API access authorization
We scope the source KulaHub portal: contact volume, activity count, email campaign history, document attachment size, user count, and any known custom fields or form submissions. Because KulaHub requires assisted API access, we submit the access authorization request on the customer's behalf and coordinate a discovery call with KulaHub support. We probe the API with a small batch of requests to measure response headers, page-size limits, and pagination behavior, then document the throughput findings. We pair this with a destination Dynamics 365 edition review: Sales Professional ($65/user) covers most KulaHub replacements; Sales Enterprise ($105/user) adds advanced AI, custom controls, and territory management if required.
Schema design and Account grouping strategy
We design the destination Dynamics 365 schema based on the inferred Account-Contact hierarchy. We define the Account grouping rule (by domain, by exact company_name match, or by manual mapping table provided by the customer), create the custom field kulahub_id__c on Account and Contact, configure any required custom entities for form submission data, and set up the Dynamics 365 email integration settings to match the GDPR preference transfer. Schema is deployed into a Dynamics 365 Sandbox via the environment lifecycle tools before any data moves.
Sandbox migration and reconciliation
We run a full migration into the Dynamics 365 Sandbox using a sample of 500-1,000 production-equivalent records. The customer reconciles record counts (Accounts created, Contacts linked, Activities loaded, Documents attached), spot-checks 25-50 records against the KulaHub source, and reviews the Account grouping output for accuracy. We correct any grouping logic errors, adjust custom field mappings, and finalize the transformation scripts before production migration begins. Any unmapped form submission fields are held in a staging table and reviewed with the customer.
User provisioning and owner reconciliation
We extract every distinct KulaHub user referenced on Contact, Activity, and Task records and match by email against the Dynamics 365 destination User table. If the customer is provisioning a new Dynamics 365 tenant, the admin creates the corresponding users before the production migration phase. Users without a match go to a reconciliation queue. Owner reconciliation must complete before any records that reference owners are loaded because OwnerId is a required field on most standard objects.
Production migration in dependency order
We run production migration in record-dependency order: Users (manually provisioned and validated first), Accounts (from inferred KulaHub company data), Contacts (with Parent Account lookup resolved), Activities (chronologically ordered via Dataverse Bulk API with WhoId and WhatId resolved), Documents (as Note or SharePoint linked records), Tasks, Email Templates, Campaigns, CampaignMembers (for unsubscribe and engagement history), and Form Submission data (as custom entity records). Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, validation, and automation handoff
We freeze KulaHub writes during the cutover window, run a final delta migration of any records modified during the migration run, then enable Dynamics 365 as the system of record. We deliver the Workflow and Automation Inventory document to the customer's admin team: KulaHub workflows do not migrate to Dynamics 365 Flow because the trigger models differ structurally, and the inventory documents every automation requiring manual rebuild. We support a one-week hypercare window where we resolve reconciliation issues raised by the customer's team. We do not rebuild KulaHub automations as Dynamics 365 Flow inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
KulaHub
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Sales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between KulaHub and Microsoft Dynamics 365 Sales .
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across KulaHub and Microsoft Dynamics 365 Sales .
Object compatibility
All 8 core objects map 1:1 between KulaHub and Microsoft Dynamics 365 Sales .
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
KulaHub: Not publicly documented.
Data volume sensitivity
KulaHub 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 KulaHub to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
Walk through your KulaHub to Microsoft Dynamics 365 Sales migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave KulaHub
Other ways to arrive at Microsoft Dynamics 365 Sales
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.