CRM migration
Field-level mapping, validation, and rollback between Alpine IQ and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .
Alpine IQ
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
7 of 10
objects map 1:1 between Alpine IQ and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Alpine IQ to Microsoft Microsoft Dynamics 365 Sales is a platform migration from a purpose-built cannabis and regulated-retail CRM to an enterprise Microsoft CRM. Alpine IQ Personas map to Dynamics 365 Contact (or Lead for unqualified prospects), with loyalty point balances and tier names preserved as custom fields. Order history migrates to a custom entity or Opportunity line items depending on the customer's sales process, and attribution parameters from Alpine IQ's attr field transfer as custom properties for campaign reporting. We handle blocklisted contact suppression during export, store-name mapping validation for multi-location accounts, and opt-in status as Contact-level boolean fields. Alpine IQ Flows (automation triggers), discount group configurations tied to POS rules, and loyalty program expiration logic do not migrate; we deliver a written inventory of these for the customer's admin to rebuild in Dynamics or Power Automate.
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
Alpine IQ platform overview
Scorecard, SWOT, gotchas, and pricing for Alpine IQ.
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 Alpine IQ 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.
Alpine IQ
Persona
Microsoft Dynamics 365 Sales
Contact (or Lead)
1:1Alpine IQ Personas map to Dynamics 365 Contact for qualified customers and Lead for prospects that have not been assigned to a sales rep. We use the Persona is_customer flag and order history to determine routing: contacts with at least one completed order become Dynamics Contact; all others become Lead. Standard PII fields (name, phone, email, birthdate, address, med ID) map directly; loyalty point balance and tier status migrate to custom fields aiq_loyalty_points__c and aiq_loyalty_tier__c.
Alpine IQ
Order
Microsoft Dynamics 365 Sales
Custom Order Entity (or Opportunity with Line Items)
1:1Alpine IQ Order records contain order ID, status, timestamps, customer PII, item data (product name, category, SKU, brand, price, discount), payment details, and attribution parameters. Microsoft Dynamics 365 Sales has no native Order object; we create a custom entity aiq_order__c with the relevant fields, or map to Opportunity with Line Items if the customer prefers an Opportunity-centric sales process. The choice is made during scoping based on the customer's revenue recognition workflow.
Alpine IQ
Audience
Microsoft Dynamics 365 Sales
Marketing List (static)
1:1Alpine IQ audiences are segmented contact groups used for campaign targeting. We export audience membership (contact ID plus audience name and points multiplier) and create a static Marketing List in Dynamics 365 for each audience. The points multiplier migrates to a custom field aiq_audience_multiplier__c on the MarketingListMember record or as a custom field on the Contact if the customer prefers per-contact audience scoring.
Alpine IQ
Loyalty Program (Points and Tiers)
Microsoft Dynamics 365 Sales
Custom fields on Contact
lossyLoyalty point balances and tier names are stored as custom fields on the Contact record: aiq_loyalty_points__c (number), aiq_loyalty_tier__c (text), and aiq_reward_override__c (boolean). The rules governing point expiration, tier progression thresholds, and reward eligibility are configuration-level settings in Alpine IQ and do not export. We deliver a loyalty program snapshot document listing all reward structures for manual rebuild in Dynamics 365 Power Automate or a loyalty management ISV.
Alpine IQ
Discount Group
Microsoft Dynamics 365 Sales
Custom field on Contact + POS rule handoff document
lossyAlpine IQ discount groups map to POS discount rules and customer eligibility flags. We export the discount group name and eligibility status as a custom picklist field aiq_discount_group__c on the Contact. The POS-side discount rule configuration does not migrate; we provide a written handoff document listing each discount group with its eligibility criteria for the customer's POS admin to reconfigure.
Alpine IQ
Opt-In Record
Microsoft Dynamics 365 Sales
Contact fields (HasOptedOutOfEmail, aiq_sms_optin__c)
1:1Email and SMS opt-in status tracked via Alpine IQ /api/v2/optin endpoints migrates to Dynamics 365 Contact. Email opt-in becomes HasOptedOutOfEmail (false = opted in); SMS opt-in becomes a custom boolean field aiq_sms_optin__c. Each opt-in record is timestamped and we preserve the last opt-in date in aiq_email_optin_date__c and aiq_sms_optin_date__c custom fields.
Alpine IQ
Store/Location Mapping
Microsoft Dynamics 365 Sales
Account (location) + Contact aiq_store__c lookup
lossyMulti-location Alpine IQ accounts map each integration to a specific store. We extract the full store mapping configuration and validate that store names in Alpine IQ match the Account names in Dynamics 365. Mismatched store names require correction before migration because Dynamics 365 does not have Alpine IQ's integration-name-to-store resolver. We flag discrepancies during scoping and provide a store-name reconciliation worksheet.
Alpine IQ
Attribution Parameters (attr)
Microsoft Dynamics 365 Sales
Custom fields on aiq_order__c or Opportunity
1:1Alpine IQ's attr parameter on order objects stores campaign attribution values (UTM-like sources). We export the raw attr string and parse it into structured custom fields: aiq_attr_source__c, aiq_attr_medium__c, aiq_attr_campaign__c, and aiq_attr_content__c on the order or Opportunity entity. This enables campaign ROI reporting in Dynamics 365 without a separate analytics export.
Alpine IQ
Custom Contact Properties
Microsoft Dynamics 365 Sales
Custom fields on Contact
1:1Alpine IQ supports custom fields on Persona records. We export all custom properties alongside standard fields and map them to custom fields in Dynamics 365 with API names prefixed aiq_ (for example, aiq_preferred_strain__c, aiq_visit_frequency__c). Field types are matched to Dynamics 365 equivalents: text to Text, numbers to Number, dates to Date, and multi-select to Choice.
Alpine IQ
Integration Source ID
Microsoft Dynamics 365 Sales
Custom field on Contact aiq_source_id__c
1:1Every Alpine IQ Persona carries a source ID from the integration that created it (POS, ecommerce, etc.). We preserve all source IDs in a custom field aiq_source_id__c (text) and aiq_source_system__c (text) on the Contact record. This maintains the integration audit trail and enables reconciliation if the customer later re-connects POS integrations to Dynamics 365.
| Alpine IQ | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Persona | Contact (or Lead)1:1 | Fully supported | |
| Order | Custom Order Entity (or Opportunity with Line Items)1:1 | Fully supported | |
| Audience | Marketing List (static)1:1 | Fully supported | |
| Loyalty Program (Points and Tiers) | Custom fields on Contactlossy | Fully supported | |
| Discount Group | Custom field on Contact + POS rule handoff documentlossy | Fully supported | |
| Opt-In Record | Contact fields (HasOptedOutOfEmail, aiq_sms_optin__c)1:1 | Fully supported | |
| Store/Location Mapping | Account (location) + Contact aiq_store__c lookuplossy | Fully supported | |
| Attribution Parameters (attr) | Custom fields on aiq_order__c or Opportunity1:1 | Fully supported | |
| Custom Contact Properties | Custom fields on Contact1:1 | Mapping required | |
| Integration Source ID | Custom field on Contact aiq_source_id__c1: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.
Alpine IQ gotchas
Blocklist contacts excluded from standard API GET
Store name matching required for loyalty attribution
Initial integration sync delay up to 24 hours
Points and tier expiration logic not exported
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 scope definition
We audit the source Alpine IQ account: Persona count and custom property definitions, order volume and history depth, audience list count and membership size, loyalty program snapshot (points, tiers, multipliers), opt-in records, and POS integration configuration (Dutchie, Flowhub, Cova, etc.). We pair this with a Dynamics 365 instance review: existing Account and Contact field schema, custom entity definitions, user count, and Power Platform licensing. The discovery output is a written migration scope, a Dynamics 365 schema design proposal, and a recommendation on Order entity strategy (custom entity vs Opportunity with Line Items).
Blocklist mitigation and store name reconciliation
We extract the full contact export including any blocklist considerations, query Alpine IQ's alternative endpoints to capture suppressed records, and flag any contacts with inconsistent opt-in status. We extract the full store and location mapping configuration and validate store names against Dynamics 365 Account names. Mismatches are documented in a store-name reconciliation worksheet for the customer's admin to correct before record migration begins. This step prevents loyalty attribution failures and orphaned contact-store relationships.
Schema design and custom entity creation
We create the custom aiq_order__c entity (or configure Opportunity/Line Item mapping if the customer chose that model), custom fields on Contact for loyalty points, tier, opt-in timestamps, med ID, attribution, and source system. We configure Record Types and Sales Processes in Dynamics 365 if the customer uses multiple sales processes. The schema deploys into the customer's Dynamics 365 sandbox first for validation before production migration begins.
Sandbox migration and reconciliation
We run a full migration into Dynamics 365 Sandbox using production-like data volume. The customer's RevOps or IT lead reconciles record counts (Personas in, Contacts and Leads out, Orders in, line items in), spot-checks 20-30 random records against Alpine IQ source data, and validates loyalty point balances and opt-in flags. The customer signs off the schema and mapping before production migration begins. Any corrections happen in sandbox, not in production.
Production migration in dependency order
We run production migration in record-dependency order: Contacts (with AccountId resolved and Lead/Contact routing applied), Loyalty custom fields on Contact (aiq_loyalty_points__c, aiq_loyalty_tier__c), Opt-in fields and attribution, Orders and Line Items (custom entity or Opportunity), Audience membership (Marketing Lists), and Custom Contact Properties (aiq-prefixed fields). Each phase emits a row-count reconciliation report before the next phase begins. Blocklist contacts are imported last with the suppressed flag set so that Dynamics marketing has accurate opt-out data.
Cutover, validation, and automation rebuild handoff
We freeze Alpine IQ writes during cutover, run a final delta migration of any records modified during the migration window, then enable Dynamics 365 as the system of record. We deliver the Flow inventory document (Alpine IQ automation triggers), loyalty program snapshot (point expiration rules, tier thresholds), and discount group handoff document (POS eligibility criteria) to the customer's admin team. We support a one-week hypercare window where we resolve reconciliation issues. We do not rebuild Alpine IQ Flows as Power Automate flows inside the migration scope; that is a separate engagement.
Platform deep dives
Alpine IQ
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Sales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Alpine IQ and Microsoft Dynamics 365 Sales .
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Alpine IQ and Microsoft Dynamics 365 Sales .
Object compatibility
All 8 core objects map 1:1 between Alpine IQ 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
Alpine IQ: 5 requests per second, 120 per minute, and 2,000 per hour per documented developer guide..
Data volume sensitivity
Alpine IQ 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 Alpine IQ to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
Walk through your Alpine IQ 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 Alpine IQ
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.